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

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

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

Anthos と Google Cloud での複数クラスタの操作に関する基本情報については、マルチクラスタ管理をご覧ください。

Connect ゲートウェイは Google ID を使用してクラスタに対する認証を行います。既存の OICD ID プロバイダの ID を使用する方法については、Anthos Identity Service の概要をご覧ください。

Connect Gateway を使用する理由

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

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

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

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

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

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

仕組み

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

  1. ユーザーまたはサービスが、gcloud コマンドライン ツールを使用してフリートのメンバーシップ リソースを一覧表示することでクラスタを検出します。

    gcloud container hub memberships list
    
  2. ユーザーまたはサービスは、gcloud コマンドライン ツールを使用して選択したクラスタに達するのに必要な Connect Gateway 特有の kubeconfig を取得します。

    gcloud container hub memberships get-credentials membership-name
    

    GKE で gcloud ツールを使用することに慣れている場合は、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 に基づいて承認されます。ただし、多くの場合、セキュリティ グループのメンバーシップに基づいてユーザーを認証できると便利です。グループ メンバーシップに基づいて承認すれば、アカウントごとに個別の承認を設定する必要がないため、ポリシーの管理や監査が容易になります。そのため、たとえば、クラスタへのアクセスをチームで簡単に共有できます。これにより、チームが入社したり退職したりしたときに、個々のユーザーを手動でクラスタから追加または削除する必要がなくなります。Anthos Identity Service を使用して追加設定を行い、ユーザーまたはサービスの Google グループ メンバーシップ情報を取得するように Connect ゲートウェイを構成できます。

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

レイテンシ

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

次のステップ