このページでは、Config Connector アドオンを使用して Google Kubernetes Engine(GKE)クラスタに Config Connector をインストールする方法について説明します。
Google Cloud で GKE を使用している場合は、このアドオンを使用して Config Connector をインストールすることをおすすめします。他のインストール オプションについて詳しくは、インストール タイプの選択をご覧ください。
始める前に
作業を始める前に、次のことを確認してください。
- Google Kubernetes Engine API が有効になっていることを確認します。 Google Kubernetes Engine API の有効化
- Google Cloud CLI がインストールされていることを確認します。
- 次のいずれかの方法で、プロジェクトにデフォルトの Google Cloud CLI 設定をセットアップします。
- プロジェクトのデフォルトの設定全般を確認する場合は、
gcloud init
を使用します。 gcloud config
を使用して、プロジェクト ID、ゾーン、リージョンを個別に設定します。-
gcloud init
を実行して、次の操作を行います。gcloud init
リモート サーバーで SSH を使用している場合は、
--console-only
フラグを指定して、コマンドがブラウザを起動しないようにします。gcloud init --console-only
- Google Cloud アカウントを使用できるように、gcloud CLI の承認手順を行います。
- 新しい構成を作成するか、既存の構成を選択します。
- Google Cloud プロジェクトを選択します。
- デフォルトの Compute Engine ゾーンを選択します。
- デフォルトの Compute Engine リージョンを選択します。
- デフォルトのプロジェクト ID を設定します。
gcloud config set project PROJECT_ID
- デフォルトの Compute Engine リージョン(例:
us-central1
)を設定します。gcloud config set compute/region COMPUTE_REGION
- デフォルトの Compute Engine ゾーン(例:
us-central1-c
)を設定します。gcloud config set compute/zone COMPUTE_ZONE
gcloud
を最新バージョンに更新します。gcloud components update
gcloud init
gcloud config
デフォルトの場所を設定することで、gcloud CLI のエラー(One of [--zone, --region] must be supplied: Please specify location
など)を防止できます。
- Config Connector をインストールする Google Cloud プロジェクトを作成または選択します。
Config Connector アドオンのインストール
Config Connector アドオンを使用するには、新しい GKE クラスタを作成するか、既存のクラスタでそれを有効化します。Config Connector アドオンをインストールしたら、Google サービス アカウントと Namespace を使用して Config Connector インストールを構成します。
要件
Config Connector アドオンには次の要件があります。
次の GKE バージョンを使用する必要があります。
- 1.15.11-gke.5 以降
- 1.16.8-gke.8 以降
- 1.17.4-gke.5 以降
Config Connector を有効にしたクラスタで、Workload Identity プールと Kubernetes Engine Monitoring を有効にする必要があります。
GKE クラスタを設定する
Config Connector アドオンは、新規または既存のクラスタで使用できます。
Config Connector アドオンを有効にして新しいクラスタを作成する
GKE クラスタは、gcloud CLI または Google Cloud Console を使用して作成できます。
gcloud
Google Cloud CLI を使用してクラスタを作成するには、次のコマンドを実行します。
gcloud container clusters create CLUSTER_NAME \
--release-channel CHANNEL \
--addons ConfigConnector \
--workload-pool=PROJECT_ID.svc.id.goog \
--logging=SYSTEM \
--monitoring=SYSTEM
次のように置き換えます。
- CLUSTER_NAME を GKE クラスタの名前に置き換えます。
- CHANNEL を GKE リリース チャンネルに置き換えます。
rapid
とregular
がサポートされています。 - PROJECT_ID は、Google Cloud プロジェクト ID に置き換えます。
Cloud Console
Google Cloud Console でクラスタを作成するには、次の手順を行います。
Cloud Console で Google Kubernetes Engine のメニューに移動します。
[作成] をクリックします。[Kubernetes クラスタの作成] ページが表示されます。
クラスタの [名前] を指定します。
サポートされている [マスター バージョン] を選択します。
必要に応じて残りのクラスタを構成します。
ナビゲーション パネルの [クラスタ] の下の [セキュリティ] をクリックします。
[ワークロード ID を有効にする] チェックボックスをオンにします。
左側のナビゲーションパネルで、[クラスタ] の下の [機能] をクリックします。
[Config Connector を有効にする] チェックボックスをオンにします。
[作成] をクリックします。
クラスタを作成したら、ID の作成に進みます。
既存のクラスタで Config Connector アドオンを有効にする
gcloud
または Google Cloud Console を使用して、既存の GKE クラスタで Config Connector アドオンを有効にできます。
要件
既存のクラスタで Config Connector アドオンを有効にする前提条件は以下のとおりです。
- Config Connector アドオンの要件を満たすクラスタが必要です。
Config Connector をインストールするクラスタに Workload Identity を設定します。
ノードプールの Workload Identity を有効にするには、gcloud
コマンドライン ツールを使用します。
gcloud container node-pools update NODE_POOL \
--workload-metadata=GKE_METADATA \
--cluster CLUSTER_NAME
次のように置き換えます。
- NODE_POOL をノードプールの名前に置き換えます。
- CLUSTER_NAME をクラスタ名に置き換えます。
Config Connector アドオンを有効にする
Config Connector アドオンは、Google Cloud CLI または Google Cloud Console を使用して既存の GKE クラスタで有効にできます。
gcloud
既存の GKE クラスタで Config Connector アドオンを有効にするには、Google Cloud CLI を使用します。
gcloud container clusters update CLUSTER_NAME \
--update-addons ConfigConnector=ENABLED
CLUSTER_NAME を GKE クラスタの名前に置き換えます。
Cloud Console
Cloud Console で Google Kubernetes Engine のメニューに移動します。
Config Connector をインストールするクラスタを選択します。[クラスタの詳細] ページが表示されます。
[機能] セクションで、Config Connector の行を見つけて [
編集] をクリックします。[Config Connector を有効にする] チェックボックスをオンにして、[変更を保存] をクリックし、クラスタを更新します。
ID を作成する
Config Connector は、Identity and Access Management(IAM)サービス アカウントで認証し、GKE の Workload Identity を使用して IAM サービス アカウントを Kubernetes サービス アカウントにバインドすることで、Google Cloud リソースを作成、管理します。
ID を作成するには、次の手順を行います。
-
IAM サービス アカウントを作成する。既存のサービス アカウントを使用する場合は、そのアカウントを使用してこの手順を省略できます。
サービス アカウントを作成するには、次のコマンドを使用します。gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
をサービス アカウントの名前に置き換えます。 - IAM サービス アカウントに、プロジェクトへの昇格した権限を付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/editor"
以下を置き換えます。PROJECT_ID
: プロジェクト ID。SERVICE_ACCOUNT_NAME
: サービス アカウントの名前。
-
IAM サービス アカウントと、Config Connector が実行する事前定義された Kubernetes サービス アカウントの間の IAM ポリシー バインディングを作成します。
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \ --role="roles/iam.workloadIdentityUser"
以下を置き換えます。SERVICE_ACCOUNT_NAME
: サービス アカウントの名前。PROJECT_ID
: プロジェクト ID。
サービス アカウントの作成の詳細については、サービス アカウントの作成と管理をご覧ください。
Config Connector を構成する
インストールを完了するには、ConfigConnector
CustomResource の構成ファイルを作成し、kubectl apply
コマンドを使用してそれを適用します。Config Connector Operator は、Google Cloud Resource CRD と Config Connector コンポーネントをクラスタにインストールします。
演算子を構成するには、次の手順を行います。
- 次の YAML ファイルを
configconnector.yaml
という名前のファイルにコピーします。# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
以下を置き換えます。SERVICE_ACCOUNT_NAME
: サービス アカウントの名前。PROJECT_ID
: プロジェクト ID。
kubectl apply
を使用してクラスタに構成を適用します。kubectl apply -f configconnector.yaml
リソースを作成する場所の指定
Config Connector では、プロジェクト、フォルダ、組織別にリソースを編成できます。これは、Google Cloud でリソースを編成するのと同じ方法です。
Config Connector を使用してリソースを作成する前に、リソースを作成する場所を構成する必要があります。Config Connector は、リソースを作成する場所を決定するために、リソース構成または既存の Namespace のアノテーションを使用します。詳細については、リソースの整理をご覧ください。
この目的の Namespace がない場合は、kubectl
を使用して Namespace を作成します。kubectl create namespace NAMESPACE
NAMESPACE
を実際の Namespace 名に置き換えます。例: config-connector
タブを選択して、Config Connector がリソースを作成する場所を選びます。
プロジェクト
特定のプロジェクトにリソースを作成するには、次のコマンドを実行します。
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID
以下を置き換えます。
NAMESPACE
は、実際の Namespace 名に置き換えます。PROJECT_ID
は、Google Cloud プロジェクト ID に置き換えます。
フォルダ
特定のフォルダにリソースを作成するには、次のコマンドを実行します。
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID
以下を置き換えます。
NAMESPACE
は、実際の Namespace 名に置き換えます。FOLDER_ID
は、Google Cloud フォルダ ID に置き換えます。
組織
特定の組織にリソースを作成するには、次のコマンドを実行します。
kubectl annotate namespace \ NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID
以下を置き換えます。
NAMESPACE
は、実際の Namespace 名に置き換えます。ORGANIZATION_ID
は、Google Cloud 組織 ID に置き換えます。
名前空間にアノテーションを付けると、Config Connector は対応するプロジェクト、フォルダー、または組織にリソースを作成します。Config Connector が Kubernetes Namespace を使用する方法の詳細については、Kubernetes Namespace と Google Cloud プロジェクトをご覧ください。
インストールの確認
Config Connector は、すべてのコンポーネントを cnrm-system
という名前の Namespace で実行します。Pod の準備ができていることを確認するには、次のコマンドを実行します。
kubectl wait -n cnrm-system \
--for=condition=Ready pod --all
Config Connector が正しくインストールされている場合、出力は次のようになります。
pod/cnrm-controller-manager-0 condition met
Config Connector のアップグレード
クラスタの Config Connector アドオンのアップグレードは、Google Cloud によって管理されます。
定期的に Config Connector を最新バージョンにアップグレードする場合は、クラスタを Rapid チャンネルに登録します。アップグレードをさらに高速化するには、Config Controller の使用を検討してください。
Google Cloud は、特定の GKE マイナー バージョンを特定の Config Connector バージョンにマッピングします。クラスタを新しい GKE マイナー バージョンにアップグレードすると、クラスタの Config Connector アドオンが自動的にアップグレードされます。
Rapid チャンネルでのみ利用可能な GKE マイナー バージョン(Regular チャンネルや Stable チャンネルでは利用できない GKE マイナー バージョン)は、1~2 週間ごとに最新の Config Connector バージョンにアップグレードされます。そうした GKE マイナー バージョンのクラスタは、それに応じて自動的にアップグレードされます。リリース チャンネルで使用可能なバージョンを確認する方法については、リリース チャンネルのデフォルト バージョンと利用可能なバージョンの表示をご覧ください。
広範囲にわたる問題が検出された緊急の場合を除き、安定を図る目的により、Google Cloud では、Regular または Stable チャンネルですでに利用可能な GKE マイナー バージョンを新しい Config Connector バージョンにアップグレードすることはありません。
Config Connector のアンインストール
Config Connector をアンインストールするには、次の手順を実行します。
kubectl delete
を使用して、コントローラ コンポーネントとともに Config Connector CRD を削除します。kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com --wait=true
gcloud CLI または Google Cloud Console を使用して、クラスタ内の Config Connector アドオンを無効にします。
gcloud
gcloud
で Config Connector アドオンを無効にするには、次のコマンドを実行します。gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED
CLUSTER_NAME は、Config Connector アドオンがインストールされているクラスタの名前に置き換えます。
Cloud Console
Google Cloud Console から Config Connector アドオンを無効にするには、次の手順を実行します。
Google Cloud Console の [Google Kubernetes Engine Clusters] ページに移動し、更新するクラスタを選択します。
[編集] をクリックします。[クラスタの編集] 画面が表示されます。
[アドオン] をクリックします。
[Config Connector] を選択し、[Disabled] を選択します。
[保存] をクリックしてクラスタを更新します。
トラブルシューティング
以下のセクションでは、Config Connector のインストールに関するトラブルシューティングのヒントを紹介します。
Config Connector アドオンのインストールに関するトラブルシューティング
Config Connector アドオンを正常に有効にできない場合は、Node version 1.15.x-gke.x s unsupported
というエラー メッセージが表示されます。このエラーを解決するには、GKE クラスタのバージョンが、要件を満たしていることを確認します。クラスタのすべての有効なバージョンを取得するには、次のコマンドを実行します。
gcloud container get-server-config --format "yaml(validMasterVersions)" \
--zone ZONE
ZONE を Compute Engine ゾーンに置き換えます。
要件を満たすリストからバージョンを選択します。エラー メッセージは、Workload Identity または Kubernetes Engine Monitoring が無効になっている場合にも表示されます。エラーを解決するには、これらの機能を有効になっていることを確認してください。
リソース調整の権限に関するトラブルシューティング
Config Connector がリソースを正常に調整できず、ログにエラー メッセージ The caller does not have permission, forbidden.
が含まれている場合は、GKE クラスタまたはノードプールで Workload Identity が有効になっていない可能性があります。
調べるには、次の手順を行います。
- 次の Pod 構成を
wi-test.yaml
として保存します。apiVersion: v1 kind: Pod metadata: name: workload-identity-test namespace: cnrm-system spec: containers: - image: google/cloud-sdk:slim name: workload-identity-test command: ["sleep","infinity"] serviceAccountName: cnrm-controller-manager
- GKE クラスタに Pod を作成します。
kubectl apply -f wi-test.yaml
- Pod でインタラクティブ セッションを開きます。
kubectl exec -it workload-identity-test \ --namespace cnrm-system \ -- /bin/bash
- ID を一覧表示します。
gcloud auth list
-
表示された ID が、リソースにバインドされた Google サービス アカウントと一致していることを確認します。
ID ではなく、Compute Engine のデフォルトのサービス アカウントが表示されている場合は、GKE クラスタまたはノードプール(あるいは、それらの両方)で Workload Identity が有効になっていません。
- インタラクティブなセッションを終了し、GKE クラスタから Pod を削除します。
kubectl delete pod workload-identity-test \ --namespace cnrm-system
次のステップ
- Config Connector を使ってみる。
- 他のクラウド プロバイダに Config Connector をインストールする方法について確認する。
- Config Connector の高度なインストール オプションについて確認する。