Connect Gateway を使用して登録済みクラスタに接続する

Google Cloud のフリートは、Kubernetes クラスタと他のリソースを一元管理できる論理グループで、Google Cloud にクラスタを登録して作成されます。フリートを活用して構築される Connect Gateway を使用すると、Anthos ユーザーは、フリート メンバー クラスタが Google Cloud、他のパブリック クラウド、またはオンプレミスのどこにある場合でも、シンプルで一貫性のある安全な方法で接続して、コマンドを実行でき、すべてのクラスタにわたって DevOps プロセスの自動化が容易になります。

このガイドは、基本的なフリートのコンセプトと、フリートへのクラスタの登録についてよく理解されていることを前提としています。そうでない場合は、フリート管理の概要フリートの作成の概要、および関連するガイドをご覧ください。また、kubectlclient-go(ゲートウェイを自動化に使用する場合)、ロールベースのアクセス制御(RBAC)、Kubernetes の主要リソースなど、Kubernetes のツールとコンセプトについても十分に理解している必要があります。

デフォルトでは、Connect ゲートウェイは Google ID を使用してクラスタに対する認証を行い、Workforce Identity 連携を使用するサードパーティ ID プロバイダのサポートおよび GKE Identity Service を介したグループベースの認証サポートを行います。GKE Identity Service の詳細を確認したり、スタンドアロンのサードパーティ認証オプションとして使用したりする場合は、GKE Identity Service の概要をご覧ください。

Connect Gateway を使用する理由

クラスタが複数のクラウドやハイブリッド環境で実行されている場合、ワークロードの管理には多くの課題があります。クラスタは、異なる Virtual Private Cloud(VPC)で実行され、異なる ID プロバイダを利用し、接続、認証、承認が複雑になる場合があります。ときには、そうした環境にわたるクラスタを見つけることでさえ困難が伴います。

Connect Gateway を使用すると、次のことが簡単に行えます。

  • Google Cloud、別のパブリック クラウド、オンプレミスに存在するクラスタを検出し、簡単なクエリを使用してフリートに登録する。
  • Google Cloud コンソールで登録済み GKE クラスタを表示するために使用したものと同じインフラストラクチャを使用して、目的のクラスタに接続する。
  • Google Cloud サービスで使用しているものと同じ ID を使って認証する。
  • フリートに登録されているすべてのクラスタに対して一貫して認可を行う。

ゲートウェイは、Google Cloud ID を認証し、Connect サービスを介してクラスタの API サーバーへの接続を提供します。

kubectl など、kubeconfig を受け入れるコマンドライン ツールを使用し、ゲートウェイを介してクラスタを直接操作できます。ゲートウェイは、ビルド パイプラインや他の DevOps 自動化にも簡単に活用できます。これを行う方法の例については、Cloud Build との統合のチュートリアルをご覧ください。

Connect サービスを使用すると、Google Cloud コンソールで Google Cloud ID を使って Google Cloud ID を持つ登録済みのクラスタに接続することもできます。そうするには、Google Cloud コンソールからクラスタにログインするの手順を行います。

仕組み

ここでは、標準的なユーザーまたはサービス(CI/CD パイプラインなど)が、適切な認証と認可を構成した後に、Connect Gateway を使用するために行うフローを示します。ユーザー向け手順の詳細は、使用方法ガイドをご覧ください。

  1. ユーザーまたはサービスは、Google Cloud CLI を使用してフリート メンバーシップ リソースを一覧表示することでクラスタを検出します。

    gcloud container fleet memberships list
    
  2. ユーザーまたはサービスは、Google Cloud CLI を使用して、選択したクラスタにアクセスするのに必要な Connect ゲートウェイ特有の kubeconfig を取得します。

    gcloud container fleet memberships get-credentials membership-name
    

    GKE で gcloud CLI を使用することに慣れている場合は、Google Cloud アカウントで gcloud container clusters get-credentials を実行する場合と同様です。これにより、プロジェクトのフリート内で登録され、接続されている任意のクラスタにアクセスできます(認可されている場合)。

  3. ユーザーまたはサービスが、ダウンロードした kubeconfig ファイルを使用して、kubectlclient-go の場合と同様にコマンドを実行します。

    1. ユーザー / サービスが Connect Gateway で認証され、ゲートウェイを使用する許可がることを確かめるために認可がチェックされます。
    2. リクエストは、Connect サービスと Connect Agent を介して、対応する Kubernetes API サーバーに転送されます。
    3. Kubernetes API サーバーがリクエストを承認します。そのためには、Connect Agent がユーザーまたはサービスになりすます権限や、ユーザーまたはサービスが目的のリクエストを行う権限を持っていることが必要です。

Google グループのサポート

前のセクションで説明した標準フローでは、ユーザーのリクエストが個々の ID に基づいて承認されます。ただ、多くの場合で、Google グループのメンバーシップに基づいてユーザーを認証できると便利です。グループ メンバーシップに基づいて認可すると、アカウントごとに個別の認可を設定する必要がないため、ポリシーの管理が簡素化され監査が容易になります。そのため、たとえば、クラスタへのアクセスをチームで簡単に共有できます。これにより、ユーザーがチームに入ったり、チームから抜けたりしたときに、個々のユーザーを手動でクラスタに追加または削除する必要がなくなります。GKE Identity Service を使用して追加設定を行うことで、ユーザーの Google グループ メンバーシップ情報を取得するように Connect ゲートウェイを構成できます。

この機能の仕組みと設定方法の詳細については、Google グループでの Connect ゲートウェイの設定をご覧ください。

この機能を接続されたクラスタまたは他の GKE クラスタ環境で使用する場合は、Cloud カスタマーケアまたは Connect Gateway チームにお問い合わせください。

サードパーティの ID のサポート

Connect ゲートウェイでは、Google Workspace のユーザーとグループに加えて、Azure Active Directory や Okta などのサードパーティの ID を使用して承認を行うことができます。Workforce Identity 連携では、外部 ID プロバイダを使用して、ワークフォース(従業員、パートナー、請負業者などのユーザー グループ)を Identity and Access Management を使用して認証および認可し、ユーザーが Connect ゲートウェイなどの Google Cloud サービスにアクセスできるようにします。GKE Identity Service を使用して追加設定を行うことで、ユーザーのサードパーティのグループ メンバーシップ情報を取得するように Connect ゲートウェイを構成できます。

Connect ゲートウェイのサードパーティ ID 機能は、Anthos 1.13 以降、GKE on VMwareベアメタル版 GKE でサポートされています。接続されたクラスタの場合、この機能は GKE Enterprise 1.16 以降で使用できます。

この機能の仕組みと設定方法の詳細については、サードパーティの ID による Connect ゲートウェイの設定をご覧ください。

サードパーティの認証を完全に設定するには、ドキュメントの手順に沿って GKE Identity Service を使用してください。

レイテンシ

リクエストのゲートウェイ経由の合計レイテンシは、Connect Gateway サービスから Connect エージェントへの RTT(ラウンド トリップ時間)と、クラスタ内でのリクエスト実行時間の 2 つの部分に分けられます。RTT に追加されるレイテンシは、p95 で 500 ミリ秒未満、p99 で 1 秒未満です。なお、ほとんどの kubectl コマンドは、ユーザーにレスポンスを返す前に、それぞれ往復のやりとりが必要な一連のさまざまなリクエストを実行します。

次のステップ