叢集外服務用於將網格外的服務添加到網格內部維護的服務註冊表中,描述了服務的網域名稱、連接埠、協議、端點等資訊,以便網格內的服務可以訪問到網格外的服務。本文介紹如何建立、修改和刪除叢集外服務。
注意事項
為了避免與Sidecar的連接埠發生衝突,建立叢集外服務時請勿使用以下Envoy連接埠:
連接埠
協議
使用者
描述
15000
TCP
Envoy
Envoy管理連接埠。
15001
TCP
Envoy
Envoy出口流量的連接埠。
15006
TCP
Envoy
Envoy入口流量的連接埠。
15020
HTTP
Envoy
合并來自Istio代理、Envoy和應用程式的Prometheus遙測的連接埠。
15021
HTTP
Envoy
健全狀態檢查連接埠。
15090
HTTP
Envoy
Envoy Prometheus遙測的連接埠。
在叢集外服務中命名連接埠時必須遵循以下規則:
協議
連接埠名稱
帶尾碼的連接埠名稱
HTTP
http
http-<尾碼>
HTTP2
http2
http2-<尾碼>
HTTPS
https
https-<尾碼>
TLS
tls
tls-<尾碼>
gRPC
grpc
grpc-<尾碼>
TCP
tcp
tcp-<尾碼>
UDP
UDP
udp-<尾碼>
Mongo
mongo
mongo-<尾碼>
MySQL
mysql
mysql-<尾碼>
Redis
redis
redis-<尾碼>
使用HTTP、HTTPS、TLS和TCP協議時請注意以下事項:
使用HTTP、HTTPS和TLS協議時,必須在叢集外服務中指定主機。
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: aliyun spec: hosts: - www.aliyun.com - aliyun.com ports: - number: 443 name: https protocol: HTTPS resolution: DNS location: MESH_EXTERNAL
使用TCP協議時,必須在叢集外服務中指定IP範圍。
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: mysql-external spec: hosts: - mysql-01.foo.bar addresses: - 10.0.0.5/32 - 10.0.0.6/32 ports: - name: tcp number: 3306 protocol: tcp location: MESH_EXTERNAL
如果您有多個外部服務使用TCP協議共用同一個連接埠,請區分服務的IP地址。
外部服務1
apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: external-svc-1 namespace: default spec: hosts: - fqdna.fqdn.com addresses: - 10.0.0.0 location: MESH_EXTERNAL ports: - name: TCP number: 3306 protocol: TCP resolution: DNS
外部服務2
apiVersion: networking.istio.io/v1beta1 kind: ServiceEntry metadata: name: external-svc-2 namespace: default spec: hosts: - fqdnb.fqdn.com addresses: - 10.1.0.0 location: MESH_EXTERNAL ports: - name: TCP number: 3306 protocol: TCP resolution: DNS
預設情況下,使用叢集外服務添加到網格的任何外部服務將可用於所有命名空間。如果您不希望其他istio-proxy訪問外部服務,您可以在叢集外服務中添加exportTo參數,將值設定為".",從而將外部服務的存取範圍限定為僅建立叢集外服務的命名空間。
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: aliyun spec: hosts: - www.aliyun.com exportTo: - "." ports: - number: 443 name: https protocol: HTTPS resolution: DNS location: MESH_EXTERNAL
建議使用DNS解析。DNS解析將忽略原始目標IP地址並將流量定向到選定的主機,然後執行DNS查詢以擷取主機的IP地址。
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: aliyun spec: hosts: - '*.aliyun.com' addresses: - 192.168.0.0 - 172.16.0.0 location: MESH_EXTERNAL ports: - number: 443 protocol: https name: https resolution: DNS
resolution:設定參數值為DNS,表示使用DNS解析;設定參數值為NONE,表示不使用DNS解析。
建立叢集外服務
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 ,然後單擊使用YAML建立。
在建立頁面,選擇命名空間和情境模版,在YAML文字框按需修改配置資訊,然後單擊建立。
關於欄位的說明,請參見Service Entry。
修改叢集外服務
在網格詳情頁面左側導覽列,選擇 。
在叢集外服務(ServiceEntry)頁面的操作列,單擊目的地組群外服務對應的查看YAML。
在編輯對話方塊,修改叢集外服務配置資訊,然後單擊確定。
刪除叢集外服務
在網格詳情頁面左側導覽列,選擇
。在叢集外服務(ServiceEntry)頁面的操作列,單擊目的地組群外服務對應的刪除。
在確認對話方塊,單擊確定。