クラスタの登録

このページでは、Kubernetes クラスタを Google Cloud に手動で登録する方法について説明します。

始める前に

Kubernetes クラスタを Google Cloud に初めて登録する前に、次のネットワーク、Google Cloud、Kubernetes の前提条件を完了してください。

  1. ネットワーク接続を確認します。Google Cloud で動作する GKE クラスタを登録する場合は、デフォルトで接続可能です。

  2. Google Cloud の構成

  3. Kubernetes の構成

クラスタを登録する

gcloud

GKE on Google Cloud クラスタを登録する

クラスタを登録する際に、Workload Identity または Google Cloud サービス アカウントを使用するように Connect Agent を構成できます。

Workload Identity を使用してクラスタを登録する(推奨)

  1. Workload Identity が GKE クラスタで有効になっているかどうかを確認する

    次のコマンドを実行して、クラスタがメンバーとなっている Workload Identity プールを一覧表示します。

    gcloud container clusters describe GKE_CLUSTER --format="value(workloadIdentityConfig.workloadPool)"
    

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

    • GKE_CLUSTER: 現在のプロジェクトの GKE クラスタの name

    次のような結果が表示された場合は、Workload Identity はすでに GKE クラスタで有効になっているため、後述の「クラスタの登録」に直接進めます。

    GKE_PROJECT_ID.svc.id.goog

    結果が表示されない場合は、GKE クラスタで Workload Identity が有効になっていません。クラスタの登録に進む前に、GKE クラスタで Workload Identity の有効化を続けてください。

  2. Workload Identity を有効にする

    リンクされている手順に沿って、慎重に GKE Workload Identity を有効にします。GKE Workload Identity を有効にすると、有効にした後に作成された新しいノードプールの認証動作が変わります。これにより、ノードプール内の Compute Engine インスタンスに接続されたサービス アカウントを使用するアプリケーションに影響が及ぶ可能性があります。

  3. クラスタの登録

    次のいずれかのコマンドを実行してクラスタを登録します。

    gcloud beta container hub memberships register MEMBERSHIP_NAME \
     --gke-uri=GKE_URI \
     --enable-workload-identity
    

    または

    gcloud beta container hub memberships register MEMBERSHIP_NAME \
     --gke-cluster=GKE_CLUSTER \
     --enable-workload-identity
    

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

    • MEMBERSHIP_NAME: ハブに登録されているクラスタを一意に表すために選択したメンバーシップ名。
    • GKE_URI: GKE クラスタの URI(例: https://container.googleapis.com/projects/my-gke-project/locations/us-central1-a/clusters/my-gke-cluster)。URI を取得するには、gcloud container clusters list --uri を実行します。
    • GKE_CLUSTER: 現在のプロジェクトの GKE クラスタの location/name。ロケーションは、ゾーンまたはリージョンのいずれかです(例: us-central1-a/my-gke-cluster)。

サービス アカウントを使用してクラスタを登録する

次のいずれかのコマンドを実行します。

gcloud container hub memberships register MEMBERSHIP_NAME \
   --gke-uri=GKE_URI \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

または

gcloud container hub memberships register MEMBERSHIP_NAME \
   --gke-cluster=GKE_CLUSTER \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

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

  • MEMBERSHIP_NAME: ハブに登録されているクラスタを一意に表すために選択したメンバーシップ名。
  • SERVICE_ACCOUNT_KEY_PATH: 前提条件の一部としてダウンロードしたサービス アカウントの秘密鍵の JSON ファイルへのローカル ファイルパス。このサービス アカウント キーは、creds-gcp という名前の Secret として gke-connect Namespace に保存されます。
  • GKE_URI: GKE クラスタの URI(例: https://container.googleapis.com/projects/my-gke-project/locations/us-central1-a/clusters/my-gke-cluster)。URI を取得するには、gcloud container clusters list --uri を実行します。
  • GKE_CLUSTER: 現在のプロジェクトの GKE クラスタの location/name。ロケーションは、ゾーンまたはリージョンのいずれかです(例: us-central1-a/my-gke-cluster)。

非 GKE クラスタ、Anthos clusters on AWS クラスタ、または Anthos clusters on VMware クラスタを登録する

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

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

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

  • MEMBERSHIP_NAME: 選択したメンバーシップ名。Hub に登録されているクラスタを一意に識別するために使用されます。
  • 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 です。

Console

Anthos on Google Cloud クラスタを登録する

以下の手順は、Anthos が有効になっているプロジェクトの Google Cloud 上の GKE クラスタに適用されます。

クラスタを登録するには、次のようにします。

  1. Google Cloud Console で、[Anthos クラスタ] ページに移動します。このページには、登録されているすべてのクラスタが表示されます。

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

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

  3. Environ に追加する未登録のクラスタの横にある [登録] をクリックします。

  4. クラスタを登録するときに使用するサービス アカウントを指定します。デフォルトの動作をそのままにして、新しいサービス アカウントを作成することをおすすめします。

    • [新しいサービス アカウントを作成] を選択した場合:
      • 新しいサービス アカウントを識別するための [Service account ID] を指定します。
      • サービス アカウント キーを JSON ファイルとしてダウンロードするかどうかを選択します。鍵は後でダウンロードできないため、デフォルトの動作を保ってダウンロードすることをおすすめします。
    • [既存のサービス アカウントを使用] を選択した場合は、アカウントの JSON 形式のサービス アカウント キーを貼り付けます。
  5. 省略可: クラスタの新しいメンバーシップ名を指定します。デフォルトでは、クラスタのメンバーシップ名は現在の名前です。ただし、プロジェクト内でクラスタ名が一意でない場合は、すべてのクラスタの環境ごとに一意の識別子が必要なため、新しい一意のメンバーシップ名を指定する必要があります。

  6. クラスタを登録するには、[送信] をクリックします。

その他のクラスタを登録する

以下の手順は、GKE 以外のクラスタ、Anthos clusters on AWS クラスタ、Anthos clusters on VMware クラスタ、その他の GKE クラスタに適用されます。

クラスタを登録するには、次のようにします。

  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 hub memberships register コマンドに渡します。次に例を示します。

--manifest-output-file=[MANIFEST_FILE_PATH]

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

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

プロキシ サーバーの使用

プロキシ サーバーを構成するには、--proxy フラグを gcloud container hub 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"}

次のステップ