索引總目錄: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 使用場景