サードパーティのクラスタを Google Cloud に接続する(前の世代)

GKE 接続クラスタを使用すると、Google Cloud コンソールで既存の Kubernetes クラスタを GKE クラスタとともに表示して、Config Sync を使用した集中構成管理など、いくつかの GKE Enterprise 機能を利用できます。

サポートされている Kubernetes クラスタ

x86 ノードを含む標準準拠の Kubernetes クラスタをフリートに接続し、GKE クラスタとともに Google Cloud コンソールに表示できます。

Google によって検証済みのクラスタのタイプとバージョンは次のとおりです。接続されたクラスタでサポートされている GKE Enterprise の機能については、Anthos コンポーネントとマルチクラウドのサポートをご覧ください。

接続されたクラスタタイプ Kubernetes バージョン
Red Hat OpenShift Kubernetes Engine(OKE)4.9、4.10 1.23、1.24
Red Hat OpenShift Container Platform(OCP)4.9、4.10 1.23、1.24
Rancher Kubernetes Engine(RKE)1.3.8 1.23、1.24
KIND 0.12 1.23、1.24
K3s 1.20 1.20
K3d 4.4.3 1.20

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Anthos API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Anthos API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. フリート登録の前提条件を参照して、関連する権限があり、クラスタ登録用の API が有効になっていることを確認してください。
  13. クラスタタイプに必要な特別な設定手順など、Google Cloud の外部にクラスタを接続するための特定の要件については、始める前にのガイドをご覧ください。

接続クラスタを登録する

GKE Enterprise で使用するすべてのクラスタは、プロジェクトのフリートに登録する必要があります。フリートを使用すると、Kubernetes クラスタを論理的にグループ化、および正規化できるため、インフラストラクチャの管理が容易になります。同じフリート内のクラスタは、Google Cloud コンソールでまとめて参照および管理できます。GKE Enterprise と Google Cloud の多くのコンポーネントでは、ID の同一性や名前空間の同一性などのフリートのコンセプトを使用して、複数クラスタの連携を簡素化しています。フリートと、それによって実現される機能の詳細については、フリート管理ガイドをご覧ください。

これらのクラスタで GKE Enterprise 機能を有効にして使用できます。GKE Enterprise の一部の機能は、GKE 機能ページからフリートレベルで管理できます。GKE Enterprise の料金は、登録済みのクラスタにのみ適用されます。

ID を設定する

すべての接続クラスタには、Google への認証時に Connect エージェントが使用する ID が必要です。クラスタが要件を満たしている場合は、認証対応のフリート Workload Identity で登録できます。この機能が有効になっているクラスタでは、フリート全体のフリート Workload Identity プールの ID が使用されます。フリートの Workload Identity の仕組みと使用するメリットの詳細については、フリート Workload Identity を使用するをご覧ください。

フリート Workload Identity を使用できない場合、接続クラスタを登録するには、認証に Google Cloud サービス アカウントが必要です。接続クラスタごとに新しいサービス アカウントを作成することをおすすめします。適切なロールを持つクラスタのサービス アカウントを作成するには、gcloud を使用して Google Cloud サービス アカウントを作成するの説明に従います。サービス アカウントを作成したら、次のセクションで説明するように、サービス アカウントの認証情報(キーファイル)で JSON ファイルを使用してクラスタを登録できます。

クラスタを登録する

クラスタの登録後にクラスタが Google Cloud に正しく接続されていることを確認するために、クラスタのメンバーシップ登録状況を取得することをおすすめします。登録に関して問題が発生した場合は、トラブルシューティング ガイドをご覧ください。

gcloud

次のコマンドを実行します。

gcloud container fleet memberships register MEMBERSHIP_NAME \
   --context=KUBECONFIG_CONTEXT \
   --kubeconfig=KUBECONFIG_PATH \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

次のように置き換えます。

  • MEMBERSHIP_NAME: 選択したメンバーシップ名。フリートに登録されているクラスタを一意に識別するために使用されます。
  • SERVICE_ACCOUNT_KEY_PATH: 前提条件の一部としてダウンロードしたサービス アカウントの秘密鍵の JSON ファイルへのローカル ファイルパス。このサービス アカウント キーは、creds-gcp という名前の Secret として gke-connect Namespace に保存されます。
  • KUBECONFIG_CONTEXT: kubeconfig ファイルに表示される際に登録されているクラスタのクラスタ コンテキスト。この値は、コマンドラインで kubectl config current-context を実行すると取得できます。
  • KUBECONFIG_PATH: 登録されるクラスタのエントリを含む kubeconfig を格納するローカル ファイルパス。環境変数が設定されている場合のデフォルトは $KUBECONFIG です。それ以外の場合のデフォルトは $HOME/.kube/config です。

フリートの Workload Identity を使用して接続クラスタを登録する

フリートの Workload Identity が有効になっている接続クラスタを登録するには、次のコマンドを実行します。この機能を使用できる接続クラスタのタイプの詳細と追加の要件については、接続クラスタの前提条件をご覧ください。

gcloud container fleet memberships register MEMBERSHIP_NAME \
   --context=KUBECONFIG_CONTEXT \
   --kubeconfig=KUBECONFIG_PATH \
   --enable-workload-identity \
   --has-private-issuer

コンソール

登録コマンドを生成する

Google Cloud コンソールを使用して、クラスタ(サービス アカウントのみを使用)を登録する gcloud 登録コマンドを生成できます。

クラスタを登録するには:

  1. Google Cloud コンソールで、Google Kubernetes Engine クラスタの概要ページに移動します。

    GKE クラスタに移動

  2. [既存のクラスタを登録] をクリックします。

  3. [外部クラスタを追加] をクリックします。

  4. 登録するクラスタの名前を [クラスタ名] フィールドに入力します。

  5. 省略可: クラスタに Google Cloud ラベルを追加します。

  6. [登録コマンドを生成] をクリックします。

  7. Cloud Shell で、またはサービス アカウントの認証情報を保存するタイミングで、ページに表示される gcloud コマンドを編集して実行します。次の値を指定する必要があります。

    • CLUSTER_CONTEXT は、kubeconfig ファイルに示されたクラスタのコンテキストです。この値は、コマンドラインで kubectl config current-context を実行すると取得できます。
    • KUBECONFIG_PATH は、kubeconfig ファイルが保存されているローカル ファイルパスです。環境変数が設定されている場合のデフォルトは $KUBECONFIG になります。それ以外の場合のデフォルトは $HOME/.kube/config です。
    • LOCAL_KEY_PATH はサービス アカウント キー ファイルのパスです。

    このコマンドによって、ユーザー クラスタに Connect Agent がデプロイされます。Connect Agent が Google Cloud に接続し、クラスタが登録されると、成功したことを示すメッセージがページに表示されます。

  8. [ラベルを設定] をクリックします。ラベルを設定しない場合は、[スキップ] をクリックします。

詳細な登録オプション(コマンドラインのみ)

Connect Agent のマニフェストをダウンロードする

インストール前にマニフェストを調べる場合やマニフェストを編集する場合など、エージェントをデプロイせずに Connect Agent のインストール マニフェストをダウンロードするには、--manifest-output-file フラグを gcloud container fleet memberships register コマンドに渡します。次に例を示します。

--manifest-output-file=[MANIFEST_FILE_PATH]

[MANIFEST_FILE_PATH] は、Connect Agent のインストール マニフェストを保存するローカル ファイルパスです。

このオプションを使用しても、Connect Agent はクラスタにデプロイされません。Connect Agent をデプロイするには、ダウンロードしたマニフェストを手動でクラスタに適用します。

プロキシ サーバーの使用

プロキシ サーバーを構成するには、--proxy フラグを gcloud container fleet memberships register コマンドに渡します。次に例を示します。

--proxy=[URL]

ここで: [URL] はプロキシ アドレスです。

Connect Agent は CONNECT ベースの HTTP プロキシと HTTPS プロキシのみをサポートし、IP アドレスとホスト名を受け入れます。URL には、プロキシタイプに対応するプロトコルを指定してください。たとえば、HTTPS ホスト名を渡す場合は、次のようにします。

--proxy=https://mycorpproxy.com:443

特に指定しない限り、Connect Agent はプロキシ用にポート 3128 を使用します。

プロキシに認証が必要な場合は、次のように認証情報を渡します。

--proxy=http://user:password@10.10.10.10:8888

Windows および Linux のノードを含むクラスタに Connect Agent をインストールする

Connect Agent は Linux ノードで実行する必要があります。Linux ノードと Windows ノードの両方が含まれる混合クラスタにインストールする場合、デプロイ定義に適切なノードセレクタを追加することで、Connect Agent を Linux ノードに確実にデプロイできます。

次のコマンドを実行して、適切なノードセレクタでデプロイを更新します。

kubectl patch deployment \
$(kubectl get deployment -o=jsonpath='{.items[*].metadata.name}' -n gke-connect) \
-p '{"spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/os":"linux"}}}}}' -n gke-connect

更新が成功したことを確認するには、次のコマンドを実行します。

kubectl get deployment -o=jsonpath='{.items[].spec.template.spec.nodeSelector}' -n gke-connect

コマンドによって返される結果は次のとおりです。

{"kubernetes.io/os":"linux"}

トラブルシューティング

この設定中に問題が発生した場合は、フリート作成のトラブルシューティング ガイドをご覧ください。

接続クラスタで GKE Enterprise 機能を有効にする

クラスタを登録したら、アプリケーションで使用可能な GKE Enterprise 機能を有効にできます。これらの機能は、検証済みのクラスタタイプでのみサポートされています。これらのタイプで現在サポートされている機能のバージョンは、バージョンとアップグレードのサポートでご確認ください。

以下のガイドでは、サポートされている機能をクラスタで有効にする方法を説明します。

チュートリアル、参考資料など、すべての GKE Enterprise コンポーネントの完全なドキュメント セットについては、GKE Enterprise コンポーネントをご覧ください。

接続クラスタにアクセスする

接続クラスタを登録すると、Google Cloud コンソールの GKE と Anthos クラスタのページに表示されます。ただし、ノードやワークロードなどの詳細を確認するには、クラスタにログインして認証する必要があります。Google Cloud コンソールから接続クラスタにログインするには、Google Cloud コンソールからクラスタにログインするの手順に沿って操作します。選択した認証方法によっては、ご自身または他のユーザーがクラスタにログインする前に、ご自身またはプラットフォーム管理者が追加の設定を行う必要が生じる場合があります。

Google Cloud Identity を使用してコマンドラインから接続クラスタにアクセスするには、Connect ゲートウェイを使用した登録済みクラスタへの接続をご覧ください。

既存のサードパーティ ID プロバイダ(AWS クラスタの EKS のみ、プレビュー機能)を使用して、接続されたクラスタに対する認証を行うには、フリートに対する GKE Identity Service の設定GKE Identity Service によるクラスタへのアクセスをご覧ください。

次のステップ