Google Kubernetes Engine(GKE)用 Service Directory は、すべての GKE デプロイ全体にわたるすべてのサービスを単一のビューで提供します。さまざまなタイプの GKE サービスを追加してアノテーションを付け、Service Directory でこれらのサービスを確認できます。
GKE 用 Service Directory には次の機能があります。
- これにより、gRPC と HTTP を介してサービスを検出でき、Service Directory DNS ゾーンを使用して DNS 経由でサービスを解決できます。Service Directory と Cloud DNS の統合により、Service Directory の DNS ゾーンを構成できます。
- Service Directory は GKE の外部でサービスを登録するため、GKE サービスと非 GKE サービスが互いを簡単に検出できます。
- Service Directory は、IAM 権限と VPC Service Controls のチェックを実施して、顧客データの適切なセキュリティとプライバシーを確保します。
- Service Directory for GKE は、Autopilot GKE クラスタまたは Standard GKE クラスタで構成できます。2 つのモードについては、GKE のオペレーション モードを選択するをご覧ください。
Service Directory を構成して GKE サービスを Service Directory に自動的に登録する方法については、GKE 用 Service Directory の構成をご覧ください。
サービス マッピング
Service Directory にサービスを登録すると、GKE クラスタの Kubernetes Namespace とリージョンの名前を使用して、Google Cloud フリート プロジェクトにサービスが作成されます。次の表に、すべての GKE サービスタイプについて、GKE サービスのプロパティが Service Directory で作成されたサービスのプロパティにマッピングされる方法を示します。
最上位プロパティ
| Service Directory プロパティ | GKE プロパティ |
| プロジェクト | フリート プロジェクト |
| リージョン | クラスタのリージョン |
| Namespace | Kubernetes Namespace |
LoadBalancer サービスタイプ
次の例は、GKE LoadBalancer サービスが Service Directory にマッピングされる方法を示しています。Service Directory サービスは、フリート プロジェクトの Kubernetes Namespace と GKE クラスタのリージョンと同じ名前の Namespace に存在します。
| Service Directory プロパティ | GKE プロパティ |
| サービス名 | サービス名 |
| エンドポイント名 | Service Directory コントローラによって自動生成されます。 |
| エンドポイントの IP アドレス | LoadBalancer イングレス |
| エンドポイント ポート | LoadBalancer Service のポート |
| エンドポイント ネットワーク | クラスタの VPC ネットワーク |
次に、GKE LoadBalancer サービスの例を示します。
apiVersion: v1 kind: Service metadata: name: hello-app annotations: cloud.google.com/load-balancer-type: "Internal" labels: app: hello-app sd-import: "true" spec: ports: - port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: LoadBalancer status: loadBalancer: ingress: - ip: 10.140.0.5
Service Directory サービスの例を次に示します。
service: endpoints: - address: 10.140.0.5 metadata: cloud.google.com/load-balancer-type: "Internal" name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345 port: 80 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
NodePort サービスタイプ
次の例は、GKE NodePort Service が Service Directory にマッピングされる方法を示しています。Service Directory サービスは、GKE クラスタのハブとリージョンのプロジェクトの Kubernetes Namespace と同じ名前の Namespace に存在します。
| Service Directory プロパティ | GKE プロパティ |
| サービス名 | サービス名 |
| エンドポイント名 | Service Directory コントローラによって自動生成されます。 |
| エンドポイントの IP アドレス | サービスの Pod を実行する各ノードのノード内部 IP アドレス |
| エンドポイント ポート | 静的ノードポート |
| エンドポイント ネットワーク | クラスタの VPC ネットワーク |
次に、GKE NodePort サービスの例を示します。
apiVersion: v1 kind: Service metadata: name: hello-app annotations: key1: "value1" spec: ports: - nodePort: 30007 port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: NodePort
GKE ノードの例を次に示します。
apiVersion: v1 items: - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-d2rr status: addresses: - address: 10.142.0.27 type: InternalIP - address: 34.73.248.170 - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-kb38 status: addresses: - address: 10.142.0.29 type: InternalIP - address: 35.196.219.215 type: ExternalIP - apiVersion: v1 kind: Node metadata: name: gke-hello-cluster-default-pool-a40cbab6-x34q status: addresses: - address: 10.142.0.28 type: InternalIP - address: 34.75.202.26 type: ExternalIP
Service Directory サービスの例を次に示します。
service: endpoints: - address: 10.142.0.27 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345 port: 30007 network: projects/my-project/locations/global/networks/default - address: 10.142.0.28 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-23456 port: 30007 network: projects/my-project/locations/global/networks/default - address: 10.142.0.29 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-34567 port: 30007 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
ClusterIP サービス
次の例は、GKE ClusterIP サービスが Service Directory にマッピングされる方法を示しています。Service Directory サービスは、フリート プロジェクトと GKE クラスタのリージョンの Kubernetes Namespace と同じ名前の Namespace に存在します。
| Service Directory プロパティ | GKE プロパティ |
| サービス名 | サービス名 |
| エンドポイント名 | Service Directory コントローラによって自動生成されます。 |
| エンドポイントの IP アドレス | ClusterIP |
| エンドポイント ポート | サービスポート |
| エンドポイント ネットワーク | クラスタの VPC ネットワーク |
次に、GKE ClusterIP サービスの例を示します。
apiVersion: v1 kind: Service metadata: name: hello-app annotations: key1: "value1" labels: app: hello-app sd-import: "true" spec: clusterIP: 10.15.254.17 ports: - port: 80 targetPort: 8080 protocol: TCP selector: app: hello-app type: ClusterIP
Service Directory サービスの例を次に示します。
service: endpoints: - address: 10.15.254.17 metadata: key1: value1 name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app/endpoints/gke-hello-cluster-12345 port: 80 network: projects/my-project/locations/global/networks/default name: projects/my-project/locations/us-central1/namespaces/default/services/hello-app
次のステップ
- Service Directory の概要については、Service Directory の概要をご覧ください。
- Service Directory の使用時に発生する可能性のある一般的な問題の解決策については、トラブルシューティングをご覧ください。