集群外服務用于將網格外的服務添加到網格內部維護的服務注冊表中,描述了服務的域名、端口、協議、端點等信息,以便網格內的服務可以訪問到網格外的服務。本文介紹如何創建、修改和刪除集群外服務。
注意事項
為了避免與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)CRD說明。
修改集群外服務
在網格詳情頁面左側導航欄,選擇 。
在集群外服務(ServiceEntry)頁面的操作列,單擊目標集群外服務對應的查看YAML。
在編輯對話框,修改集群外服務配置信息,然后單擊確定。
刪除集群外服務
在網格詳情頁面左側導航欄,選擇
。在集群外服務(ServiceEntry)頁面的操作列,單擊目標集群外服務對應的刪除。
在確認對話框,單擊確定。