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

Google Cloud の Environ は、Kubernetes クラスタと一元管理が可能な他のリソースの論理グループです。Connect を使用している Google Cloud にクラスタを登録することで作成されます。Connect Gateway は、Environ の機能を利用して、Anthos ユーザーが登録済みの Anthos クラスタに接続して、コマンドを実行できるようにします。クラスタが Google Cloud、他のパブリック クラウド、またはオンプレミスのいずれにあっても、シンプルで安定した安全な方法で行えます。また、すべてのクラスタに渡り、DevOps プロセスをより簡単に自動化できます。

このガイドは、基本的な Environ のコンセプトと Google Cloud へのクラスタ登録について理解していることを前提としています。まだの場合は、Environ ガイドクラスタの登録で詳細を確認できます。また、kubectlclient-go(自動化目的のゲートウェイを使用する場合)、役割ベースのアクセス制御(RBAC)、コア Kubernetes リソースなど、Kubernetes のツールとコンセプトについても理解しておく必要があります。

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

Connect Gateway を使用する理由

クラスタが複数のクラウド環境やハイブリッド環境で実行されている場合、ワークロードの管理には多くの課題が伴います。クラスタが、別の Virtual Private Cloud(VPC)で実行されていて、異なる ID プロバイダを利用している場合、接続性、認証、認可がより複雑になります。複数の環境に渡って実在するクラスタを特定するのは困難な場合があります。

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

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

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

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

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

仕組み

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

  1. ユーザーまたはサービスは、gcloud コマンドライン ツールで Environ Membership リソースを一覧表示することによってクラスタを検出します。

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

    gcloud beta container hub memberships get-credentials membership-name
    

    すでに GKE で gcloud コマンドライン ツールを使うことに慣れている場合は、Google Cloud アカウントを使用して gcloud container clusters get-credentials を実行するのと同じです。これによって、(認証されている場合)プロジェクトの Environ 内で登録し、接続されたクラスタにアクセスできるようになります。

  3. ユーザーまたはサービスは、ダウンロードした kubeconfig ファイルを使用して、通常どおり kubectl または client-go でコマンドを実行します。

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

レイテンシ

ゲートウェイ経由のリクエストの総レイテンシは、Connect Gateway サービスから Connect Agent までの RTT(Round Trip Time)と、クラスタ内部でのリクエストを実行する時間の 2 つに分けられます。RTT がもたらすレイテンシは p95 < 500 ミリ秒と p99 < 1 秒 です。ほとんどの kubectl コマンドでは、ユーザーにレスポンスをレンダリングする前に、それぞれがラウンドトリップを必要とする一連のリクエストを実行します。

次のステップ