始める前に
概要
GKE クラスタの要件
クラスタを Kf 専用にします。これは必須ではありませんが、行うことをおすすめします。互換性マトリックスを維持するため、Kf とその依存関係のみをインストールすることをおすすめします。
少なくとも 4 つのノード。ノードを追加する必要がある場合は、クラスタのサイズ変更をご覧ください。
4 つ以上の vCPU を備えた最小マシンタイプ(
e2-standard-4など)。クラスタのマシンタイプに 4 つ以上の vCPU がない場合は、異なるマシンタイプへのワークロードの移行の説明に従ってマシンタイプを変更します。クラスタをリリース チャンネルに登録する。これは必須ではありませんが、推奨される方法です。静的 GKE バージョンがある場合は、既存のクラスタをリリース チャンネルに登録する手順を行ってください。
Workload Identity が有効になっている。
Kf の要件。依存関係マトリックスに、具体的なバージョンが記載されています。
Tekton(Kf が使用)これはユーザー向けのサービスではありません。
専用の Google サービス アカウント。
Compute Engine のサポートを有効にする
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Compute Engine API を有効にします。
- Artifact Registry API を有効にします。
- Google Kubernetes Engine API を有効にする。 Google Kubernetes Engine API の有効化
- このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、
gcloud components updateコマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。 Kf で使用するサービス アカウントを作成します。
gcloud iam service-accounts create ${CLUSTER_NAME}-sa \ --project=${CLUSTER_PROJECT_ID} \ --description="GSA for Kf ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"新しい IAM カスタムロールを作成します。
gcloud iam roles create serviceAccountUpdater \ --project=${CLUSTER_PROJECT_ID} \ --title "Service Account Updater" \ --description "This role only updates members on a GSA" \ --permissions iam.serviceAccounts.get,iam.serviceAccounts.getIamPolicy,iam.serviceAccounts.list,iam.serviceAccounts.setIamPolicyサービス アカウントに独自のポリシーの変更を許可します。これにより、Kf コントローラは新しい(名前)空間をポリシーに追加し、Workload Identity を再利用できるようにします。
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="projects/${CLUSTER_PROJECT_ID}/roles/serviceAccountUpdater"Cloud Monitoring に書き込みを行えるようにモニタリング指標のロールを付与します。
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"ロギングロールに Cloud Logging への書き込みアクセス権を付与します。
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"保存されるコンテナ イメージ用の Artifact Registry を作成します。
gcloud artifacts repositories create ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --repository-format=docker \ --location=${COMPUTE_REGION}Artifact Registry リポジトリにサービス アカウント権限を付与します。
gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --location=${COMPUTE_REGION} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'サービス メッシュをインストールします。
バージョンのプルダウンが Cloud Service Mesh のバージョン 1.9 に設定されていることを確認します。
ガイドに従って ASM をインストールします。
Config Connector をインストールします。
必要な Config Connector Operator の tar ファイルをダウンロードします。
tar ファイルを解凍します。
tar zxvf release-bundle.tar.gzクラスタに Config Connector Operator をインストールします。
kubectl apply -f operator-system/configconnector-operator.yamlConfig Connector Operator を構成します。
次の 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: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
クラスタに構成を適用します。
kubectl apply -f configconnector.yaml
続行する前に、Config Connector が完全にインストールされていることを確認します。
Config Connector は、すべてのコンポーネントを
cnrm-systemという名前の名前空間で実行します。次のコマンドを実行して、Pod の準備ができていることを確認します。kubectl wait -n cnrm-system --for=condition=Ready pod --all
Config Connector が正しくインストールされている場合、出力は次のようになります。
pod/cnrm-controller-manager-0 condition met pod/cnrm-deletiondefender-0 condition met pod/cnrm-resource-stats-recorder-86858dcdc5-6lqzb condition met pod/cnrm-webhook-manager-58c799b8fb-kcznq condition met pod/cnrm-webhook-manager-58c799b8fb-n2zpx condition met
Workload Identity を設定します。
kubectl annotate serviceaccount \ --namespace cnrm-system \ --overwrite \ cnrm-controller-manager \ iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Tekton をインストールします。
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
Kf CLI をインストールします。
Linux
このコマンドを実行すると、システム上のすべてのユーザーに Kf CLI がインストールされます。Cloud Shell のタブに表示されている手順に沿ってインストールします。
gcloud storage cp gs://kf-releases/v2.4.1/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
このコマンドを実行すると、システム上のすべてのユーザーに
kfがインストールされます。gcloud storage cp gs://kf-releases/v2.4.1/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
bashを使用している場合、このコマンドを実行すると、kfが Cloud Shell インスタンスにインストールされます。他のシェルの場合は手順の変更が必要になることがあります。mkdir -p ~/bingcloud storage cp gs://kf-releases/v2.4.1/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
このコマンドを実行すると、
kfが現在のディレクトリにダウンロードされます。現在のディレクトリ以外の場所から呼び出す場合は、その場所をパスに追加します。gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exeオペレーターをインストールします。
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
Kf のオペレーターを構成します。
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/kfsystem.yaml"
シークレットとデフォルトの値を設定します。
export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} kubectl patch \ kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"Google サービス アカウントを削除します。
gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comIAM ポリシーのバインドを削除します。
gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin" gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountAdmin" gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"コンテナ イメージ リポジトリを削除します。
gcloud artifacts repositories delete ${CLUSTER_NAME} \ --location=${COMPUTE_REGION}GKE クラスタを削除します。
gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}
Artifact Registry のサポートを有効にする
GKE の有効化と構成
作業を始める前に、次のタスクが完了していることを確認してください。
新しい GKE クラスタと関連サービスを準備する
環境変数を設定する
Linux / Mac
export PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export COMPUTE_ZONE=us-central1-a
export COMPUTE_REGION=us-central1
export CLUSTER_LOCATION=${COMPUTE_ZONE} # Replace ZONE with REGION to switch
export NODE_COUNT=4
export MACHINE_TYPE=e2-standard-4
export NETWORK=default
Windows Powershell
Set-Variable -Name PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_NAME -Value kf-cluster Set-Variable -Name COMPUTE_ZONE -Value us-central1-a Set-Variable -Name COMPUTE_REGION -Value us-central1 Set-Variable -Name CLUSTER_LOCATION -Value $COMPUTE_ZONE # Replace ZONE with REGION to switch Set-Variable -Name NODE_COUNT -Value 4 Set-Variable -Name MACHINE_TYPE -Value e2-standard-4 Set-Variable -Name NETWORK -Value default
サービス アカウントを設定する
Workload Identity を介して Kubernetes サービス アカウントに関連付けられる GCP サービス アカウント(GSA)を作成します。これにより、サービス アカウント キーを作成して挿入する必要がなくなります。
GKE クラスタを作成する
gcloud container clusters create ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION} \
--num-nodes=${NODE_COUNT} \
--machine-type=${MACHINE_TYPE} \
--network=${NETWORK} \
--addons=HttpLoadBalancing,HorizontalPodAutoscaling,NetworkPolicy \
--enable-stackdriver-kubernetes \
--enable-ip-alias \
--enable-network-policy \
--enable-autorepair \
--enable-autoupgrade \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--release-channel=regular \
--workload-pool="${CLUSTER_PROJECT_ID}.svc.id.goog" \
--service-account="${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"ファイアウォール ルールを設定する
Kf ではいくつかのファイアウォール ポートを開く必要があります。マスターノードは、ポート 80、443、8080、8443、6443 で Pod と通信できるようにする必要があります。
Workload Identity を有効にする
ここまでの手順で、サービス アカウントと GKE クラスタが作成されました。次に、クラスタの ID 名前空間をクラスタに関連付けます。
gcloud iam service-accounts add-iam-policy-binding \
--project=${CLUSTER_PROJECT_ID} \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]" \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
gcloud iam service-accounts add-iam-policy-binding \
--project=${CLUSTER_PROJECT_ID} \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"GKE クラスタをターゲットにする
次のコマンドを実行して、kubectl コマンドライン アクセスを構成します。
gcloud container clusters get-credentials ${CLUSTER_NAME} \
--project=${CLUSTER_PROJECT_ID} \
--zone=${CLUSTER_LOCATION}Artifact Registry リポジトリを作成する
クラスタにソフトウェアの依存関係をインストールする
Kf をインストールする
インストールを検証する
kf doctor --retries=20
クリーンアップ
次の手順により、新しい GKE クラスタの作成と準備で作成したすべてのコンポーネントが削除されます。