索引总目录:istio从入门到放弃系列api
一、介绍
bash
使用服务条目资源(Service Entries)能够将条目添加到 Istio 内部维护的服务注册表中。添加服务条目后,Envoy 代理能够将流量发送到该服务,就好像该服务条目是网格中的服务同样。经过配置服务条目,能够管理在网格外部运行的服务的流量。
app
此外,能够配置虚拟服务和目标规则,以更精细的方式控制到服务条目的流量,就像为网格中的其余任何服务配置流量同样。
ide
二、建立资源
网站
2.1 建立服务条目资源
spa
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: test-entry spec: hosts: - "www.baidu.com" ports: - number: 80 name: http protocol: HTTP location: MESH_EXTERNAL resolution: DNS
该服务条目资源定义了一个外部网站 baidu,并将它归入到 Istio 内部维护的服务注册表中.net
kubectl apply -f test-entry.yaml
3dkubectl get serviceentry.networking.istio.io
代理
2.2 建立客户端资源orm
apiVersion: apps/v1 kind: Deployment metadata: name: client spec: replicas: 1 selector: matchLabels: app: client template: metadata: labels: app: client spec: containers: - name: busybox image: busybox imagePullPolicy: IfNotPresent command: [ "/bin/sh", "-c", "sleep 3600" ]
编辑完,执行以下语句进行 Istio 注入:
istioctl kube-inject -f client.yaml |kubectl apply -f -
执行成功后,查看 pod 发现容器个数为 2 个,说明 istio 注入成功:
三、验证服务条目
3.1 进入client容器中访问baidu.com成功
3.2 调整 service entiries 解析类型
调整以下
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: test-entry spec: hosts: - "www.baidu.com" ports: - number: 80 name: http protocol: HTTP location: MESH_EXTERNAL resolution: STATIC endpoints: - address: 192.168.10.88
再次访问 baidu,发现已经不会成功了,多试验几回,同样不会成功。
删除 service entry,再次登陆 client 访问 baidu,发现一切正常
四、service entry 使用场景