Config Connector を手動でインストールする
このページでは、Config Connector を手動でインストールする方法について説明します。
さまざまなインストール オプションについて詳しくは、インストール タイプの選択をご覧ください。
手動のメソッドでインストールすると、アドオンを使用するよりも速く更新できます。
以下の手順では Config Connector がクラスタモードとして構成されています。つまり、単一の Google Cloud IAM サービス アカウントとして権限を借用される 1 つのグローバル Config Connector コントローラが存在することを意味します。Config Connector リソースを追加し、同じクラスタに Kubernetes Namespace を追加する場合は、Namespace モードへの切り替えを検討することをおすすめします。このモードは、スケーラビリティが高く、マルチテナントのユースケース(複数の Google Cloud プロジェクトからのリソースの管理など)で IAM 権限の分離を強化できます。
始める前に
Config Connector Operator を手動でインストールする前に、次の手順を行います。
- Config Connector がまだインストールされておらず、Workload Identity と Kubernetes Engine Monitoring を有効にした GKE クラスタの作成または識別を行います。
- クラスタに接続するように
kubectl
を構成します。
Config Connector Operator のインストール
Config Connector は、Kubernetes Operator を使用してインストールを最新の状態にします。この Operator をインストールするには、次の手順を実行します。
最新の Config Connector Operator の tar ファイルをダウンロードします。
gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar ファイルを解凍します。
tar zxvf release-bundle.tar.gz
クラスタに Config Connector Operator をインストールします。
GKE Autopilot クラスタの場合:
kubectl apply -f operator-system/autopilot-configconnector-operator.yaml
GKE Standard クラスタの場合:
kubectl apply -f operator-system/configconnector-operator.yaml
ID を作成する
Config Connector は、Identity and Access Management(IAM)サービス アカウントで認証し、Workload Identity Federation for GKE を使用して 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 に置き換えます。
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"
Config Connector を構成する
インストールを完了するには、ConfigConnector
CustomResource の構成ファイルを作成し、kubectl apply
コマンドを使用してそれを適用します。Config Connector Operator は、Google Cloud リソース 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" # Setting `stateIntoSpec` to `Absent` is recommended. It means setting `cnrm.cloud.google.com/state-into-spec` # annotation to `absent` for all Config Connector resources created in the cluster in the future. # It prevents Config Connector from populating unspecified fields into the spec. stateIntoSpec: Absent
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 Operator の最新バージョンをダウンロードしてインストールするには:
gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml
Config Connector のダウングレード
Config Connector の完全なダウングレードはサポートされていません。Config Connector Operator と CRD の両方をダウングレードするには、Config Connector をアンインストールしてから再インストールし、リソースを再適用する必要があります。
Config Connector バージョン 1.123.1 以降では、Namespace が指定されたモードを使用するインストールで、オペレータのバージョンをロールバックできます。ロールバックするオペレータがある各 Namespace で、ConfigConnectorContext
オブジェクトの spec.version
フィールドを以前の Config Connector バージョンに設定します。
Config Connector コントローラは、最大 3 つのマイナー バージョンまでロールバックできます。特定のマイナー バージョンについては、常に最新のパッチ バージョンにロールバックする必要があります。
Config Connector のアンインストール
kubectl delete
を使用して、コントローラ コンポーネントとともに Config Connector CRD を削除します。
kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
--wait=true
Config Connector Operator をアンインストールするには、次のコマンドを実行します。
kubectl delete -f operator-system/configconnector-operator.yaml --wait=true
オペレーター以外のインストールからのアップグレード
Config Connector バージョン 1.33.0 以降では、GKE アドオン、またはオペレーターを使用したインストールのみがサポートされます。
(すべての Config Connector リソースを保持して)オペレーターにアップグレードするには、CRD を除くすべての Config Connector システム コンポーネントを削除してから、オペレーターをインストールする必要があります。
次のコマンドを実行して、CRD 以外の Config Connector システム コンポーネントを削除します。
kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
アドオンから手動インストールへの切り替え
アドオンとしてインストールすると、Config Connector のバージョンはインストールされている GKE バージョンに直接関連付けられます。
手動インストールでは、迅速な更新ができますが手動でアップグレードする必要があります。
すべてのリソースを安全に保ちながら切り替えるには、以下を実行します。
ConfigConnector
オブジェクトまたはConfigConnectorContext
オブジェクトを削除せずに、アドオンを無効にします。gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED
CLUSTER_NAME
は、Config Connector をインストールしたクラスタの名前に置き換えます。選択したバージョンの Operator を手動でインストールします。
CRD 検証エラー(
KNV2009: Invalid value: "v1beta1": must appear in spec.versions
など)が発生しないようにするには、手動オペレータの選択したバージョンが、アドオンで使用していたバージョンと同じかそれ以降である必要があります。手動オペレータのバージョンをダウングレードすると、GKE アドオンが特定の CRD を新しい Config Connector バージョンにすでにアップグレードしている可能性があるため、エラー(KNV2009 など)が発生する可能性があります。
次のステップ
- Config Connector を使ってみる。
- Config Connector のベスト プラクティスについて学習する。