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

Anthos 接続クラスタを使用すると、Anthos クラスタとともに Google Cloud コンソールで既存の Kubernetes クラスタを表示して、Anthos Config Management で一元化された構成管理や、Anthos Service Mesh を使用したマイクロサービス アーキテクチャ管理など、一部の Anthos の機能が有効になります。

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

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

Google によって検証済みのクラスタのタイプとバージョンは次のとおりです。アタッチされたクラスタでサポートされている Anthos の機能については、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. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Anthos API を有効にします。

    API を有効にする

  5. Google Cloud CLI をインストールします。
  6. gcloud CLI を初期化するには:

    gcloud init
  7. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  8. Google Cloud プロジェクトで課金が有効になっていることを確認します

  9. Anthos API を有効にします。

    API を有効にする

  10. Google Cloud CLI をインストールします。
  11. gcloud CLI を初期化するには:

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

接続されたクラスタの登録

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

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

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 Console で、[Anthos クラスタ] ページに移動します。このページには、登録されているすべてのクラスタが表示されます。

    [Anthos クラスタ] ページに移動

  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"}

トラブルシューティング

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

アタッチされたクラスタでの Anthos 機能の有効化

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

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

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

アタッチされたクラスタへのアクセス

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

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

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

次のステップ