サービスエントリは、外部サービスをサービスメッシュの内部サービスレジストリに追加します。このエントリには、ドメイン名、ポート、プロトコル、エンドポイントなどのサービスのプロパティが記述されており、メッシュ内のサービスがその外部サービスにアクセスできるようになります。本トピックでは、サービスエントリの作成、変更、および削除方法について説明します。
注意事項
サイドカーとのポート競合を回避するため、サービスエントリを作成する際は、以下の 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
デフォルトでは、サービスエントリにより外部サービスはすべての名前空間からアクセス可能になります。サービスエントリが作成された名前空間内でのみアクセスを許可するには、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_EXTERNALDNS 解決方式の使用を推奨します。DNS 解決方式では、プロキシが指定されたホストに対して DNS クエリを実行し、解決された IP アドレスにトラフィックを転送します。この際、元の送信先 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 に設定します。NONE に設定すると、DNS 解決をバイパスします。
サービスエントリの作成
-
ASM コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
-
[メッシュ管理]ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションウィンドウで、を選択します。表示されるページで、[YAML から作成]をクリックします。
[Create] ページで、[Namespaces] と [Scenario Template] を選択し、必要に応じて YAML エディター内の構成を変更してから、[Create] をクリックします。
各フィールドの詳細については、「」および「Service Entry」をご参照ください。
サービスエントリの変更
メッシュ詳細ページの左側ナビゲーションウィンドウで、[] を選択します。
[External Service(ServiceEntry)] ページで、変更対象のサービスエントリを見つけ、[Actions] 列の [View YAML] をクリックします。
[Edit] ダイアログボックスで、サービスエントリの構成を変更し、[OK] をクリックします。
サービスエントリの削除
メッシュ詳細ページの左側ナビゲーションウィンドウで、[] を選択します。
[External Service(ServiceEntry)] ページで、削除対象のサービスエントリを見つけ、[Actions] 列の [Delete] をクリックします。
[Confirm] ダイアログボックスで、[OK] をクリックします。