ASM インスタンスの内部サービス レジストリに外部サービスのエントリを追加して、ASM インスタンス内のサービスが外部サービスにアクセスできるようにすることができます。サービス エントリは、サービスのドメイン名、ポート、プロトコル、エンドポイントなどのプロパティを記述します。このトピックでは、サービス エントリの作成、変更、削除の方法について説明します。
使用上の注意
サイドカーとのポートの競合を防ぐため、サービス エントリを作成する際には、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-<Suffix>
HTTP2
http2
http2-<Suffix>
HTTPS
https
https-<Suffix>
TLS
tls
tls-<Suffix>
gRPC
grpc
grpc-<Suffix>
TCP
tcp
tcp-<Suffix>
UDP
UDP
udp-<Suffix>
Mongo
mongo
mongo-<Suffix>
MySQL
mysql
mysql-<Suffix>
Redis
redis
redis-<Suffix>
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_EXTERNALTCP を使用する場合は、サービス エントリで 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
デフォルトでは、ASM インスタンスで外部サービスに対して作成したエントリは、すべての名前空間で有効です。外部サービスのエントリを作成した名前空間内のサービスのみが外部サービスにアクセスできるようにするには、サービス エントリの作成時に 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: DNSresolution: DNS 解決を有効にするには、このパラメーターを DNS に設定します。DNS 解決を無効にするには、このパラメーターを NONE に設定します。
サービス エントリの作成
ASM コンソール にログインします。左側のナビゲーション ペインで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーション ペインで、 を選択します。表示されたページで、[YAML から作成] をクリックします。
[作成] ページで、名前空間とシナリオ テンプレートを選択し、ビジネス要件に基づいて [YAML] コード エディターで設定を変更し、[作成] をクリックします。
フィールドの詳細については、「Service Entry」をご参照ください。
サービス エントリの変更
ASM インスタンスの詳細ページで、左側のナビゲーション ペインの を選択します。
[外部サービス ( Serviceentry )] ページで、変更するサービス エントリを見つけ、YAML[アクション] 列の をクリックします。
[編集] ダイアログ ボックスで、サービス エントリの構成を変更し、[OK] をクリックします。
サービス エントリの削除
ASM インスタンスの詳細ページで、左側のナビゲーション ペインの を選択します。
[外部サービス ( Serviceentry )] ページで、削除するサービス エントリを見つけ、[アクション] 列の [削除] をクリックします。
[送信] メッセージで、[OK] をクリックします。