Istio Gateway发布服务

server/2024/11/13 9:13:43/

1. Istio Gateway发布服务

在集群中部署一个 tomcat 应用程序。然后将部署一个 Gateway 资源和一个与 Gateway 绑定的 VirtualService,以便在外部 IP 地址上公开该应用程序。

1.1 部署 Gateway 资源

vim ingressgateway.yaml

---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:name: ingressgateway80
spec:selector:istio: ingressgatewayservers:- port:number: 80name: httpprotocol: HTTPhosts:- '*'

把 hosts 字段设置为 *,可以直接从外部 IP 地址访问入口网关。
在这里插入图片描述

1.2 部署Tomcat 应用

拉取所需的镜像:

docker pull tomcat:latest
docker save tomcat:latest -o tomcat-latest.img
docker load < tomcat-latest.img

部署tomcat
vim tomcat.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:creationTimestamp: nulllabels:app: tomcatname: tomcat
spec:replicas: 1selector:matchLabels:app: tomcatstrategy: {}template:metadata:creationTimestamp: nulllabels:app: tomcatspec:containers:- image: tomcat:latestimagePullPolicy: IfNotPresentname: tomcatports:- containerPort: 8080resources: {}
status: {}
kubectl apply -f tomcat.yaml

在这里插入图片描述
deployment创建成功,并且有两个容器在运行。一个是 Envoy sidecar 代理,第二个是应用程序tomcat。如下:
在这里插入图片描述

1.3 部署Tomcat service

vim tomcat.yaml

---
apiVersion: v1
kind: Service
metadata:creationTimestamp: nulllabels:app: tomcatname: tomcat
spec:ports:- port: 80name: tcpprotocol: TCPtargetPort: 8080selector:app: tomcat
status:loadBalancer: {}

创建service

kubectl apply -f service.yaml

在这里插入图片描述

1.4 部署VirtualService

为 tomcat 服务创建一个 VirtualService,并将其绑定到 Gateway 资源上
vim virtualservice.yaml

---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: virtualservice
spec:hosts:- "*"gateways:- ingressgatewayhttp:- route:- destination:host: tomcat.default.svc.cluster.localport:number: 80

创建virtualservice

kubectl apply -f virtualservice.yaml

在这里插入图片描述

在 hosts 字段中使用 *,就像我们在 Gateway 中做的那样。我们还将之前创建的 Gateway 资源(gateway)添加到 gateways 数组中。最后,我们指定了一个目的地为 Kubernetes 服务 tomcat.default.svc.cluster.local 的单一路由。

kubectl get svc -l istio=ingressgateway -n istio-system

在这里插入图片描述

如果 EXTERNAL-IP 有值(IP 地址或主机名),则说明环境具有可用于 Ingress 网关的外部负载均衡器。如果 EXTERNAL-IP 值是 (或一直是 ),则说明的环境并没有为 Ingress 网关提供外部负载均衡器的功能。
可以通过以下方法添加外部IP

kubectl edit  service istio-ingressgateway -n istio-system

在这里插入图片描述

添加externalIPs,此处填在为master的IP地址
重新查看,有地址了
在这里插入图片描述
对 GATEWAY_URL 运行 cURL 或在浏览器中打开它,我们将得到 tomcat 的响应如下:
在这里插入图片描述
另外,注意到 server 头设置为 istio-envoy,告诉我们该请求通过了 Envoy 代理。

1.4 清理资源

删除 Deployment、Service、VirtualService 和 Gateway:

kubectl delete deployments tomcat
kubectl delete service tomcat
kubectl delete virtualservice virtualservice
kubectl delete gateways ingressgateway

2. 参考文献

https://www.cnblogs.com/renshengdezheli/p/16838966.html
https://blog.csdn.net/weixin_41709748/article/details/122695478
https://developer.aliyun.com/article/886726
https://www.bookstack.cn/read/istio-handbook/best-practices-how-to-implement-ingress-gateway.md
https://www.cnblogs.com/boshen-hzb/p/10679863.html
https://istio.io/latest/zh/docs/tasks/traffic-management/ingress/ingress-control/


http://www.ppmy.cn/server/140869.html

相关文章

HDFS和HBase跨集群数据迁移 源码

HDFS集群间数据迁移&#xff08;hadoop distcp&#xff09; hadoop distcp \ -pb \ hdfs://XX.14.36.205:8020/user/hive/warehouse/dp_fk_tmp.db/ph_cash_order \ hdfs://XX.18.32.21:8020/user/hive/warehouse/dp_fksx_mart.db/HBase集群间数据&#xff08;hbase ExportSnap…

python opencv灰度变换

灰度变换 灰度变换和二值化的区别&#xff1a; 灰度变换是调整调整图像的灰度动态范围或图像对比度二值化是将图像的每个像素点调至0或255&#xff0c;只呈现白色或黑色 1.灰度化处理 图片的灰度化&#xff1a;将一个像素点的三个颜色变量相等&#xff0c;RGB&#xff0c;此…

WPF MVVM入门系列教程(三、数据绑定)

本文主要介绍WPF的数据绑定&#xff08;Data Binding&#xff09;功能&#xff0c;如果你已经熟悉本文的内容&#xff0c;可以跳过并直接阅读后面的文章。 什么是数据绑定 我们先来看一下MSDN上的说明&#xff1a; 数据绑定是在应用 UI 与其显示的数据之间建立连接的过程。 如…

MATLAB中,clear的使用方法

在MATLAB中,clear 命令是一个非常重要的工具,用于管理工作空间中的变量。其主要功能是清除变量,以帮助用户保持环境的整洁并避免潜在的命名冲突。以下是 clear 命令的详细使用方法和相关信息。 1. 基本用法 清除所有变量:clear此命令会清除当前工作空间中的所有变量。这意味…

[java][JDK]JDK8新特性

使用匿名内部类存在的问题 当需要启动一个线程去完成任务时&#xff0c;通常会通过 Runnable 接口来定义任务内容&#xff0c;并使用 Thread 类来启动该线程。 传统写法,代码如下&#xff1a; public class Demo01LambdaIntro {public static void main(String[] args) {new …

swagger、Postman、Test测试都能过,代码没问题但项目仍然不成功

swagger、Postman、Test测试都能过&#xff0c;代码没问题但项目仍然不成功 前端缓存问题&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; swagger、Postman、test测试…

【GCN】 代码详解 (1) 如何运行【pytorch】可运行版本

Graph Convolutional Networks 代码详解 前言0.引言1.环境配置2. 代码的运行2.1 报错处理2.2 运行结果 3.总结 前言 在前文中&#xff0c;已经对图卷积神经网络&#xff08;Graph Convolutional Neural Networks, GCN&#xff09;的理论基础进行了深入探讨。接下来的章节将会进…

Hive中查看字段中是否包含某些字符串的函数

CREATE TABLE employee (name STRING,age INT );INSERT INTO employee VALUES(Alice, 25),(Bob, 30),(Charlie, 35),(David, 40); 首先我们在hive中创建表插入数据进行测试 方案一&#xff1a;like select * from employee where name like %i%; #返回name中包含i的数据 li…