このドキュメントでは、Google Distributed Cloud の一部として作成されたオンプレミス クラスタ(VMware 上またはベアメタル上)に Kf とその依存関係をインストールする方法について説明します。
Kf を Google Cloud の GKE クラスタにインストールする場合とオンプレミスにインストールする場合の主な違いは次のとおりです。
- オンプレミスにインストールする場合、Config Connector をインストールする必要はありません。
- オンプレミスの場合は、Workload Identity ではなく Docker 認証情報が使用されます。
始める前に
Google Distributed Cloud の要件
Cloud Service Mesh の要件を満たすユーザー クラスタ。
ロギングとモニタリング用に構成されていること。
フリートに登録されていること。
Kf の要件
Tekton(Kf が使用)これはユーザー向けのサービスではありません。
専用の Google サービス アカウント。
新しいオンプレミス クラスタと関連サービスを準備する
環境変数を設定する
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 export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID export CLUSTER_NAME=kf-cluster export DOCKER_SERVER=YOUR_DOCKER_SERVER_URL export SA_NAME=${CLUSTER_NAME}-sa export SA_EMAIL=${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
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 Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID Set-Variable -Name CLUSTER_NAME -Value kf-cluster Set-Variable -Name DOCKER_SERVER -Value YOUR_DOCKER_SERVER_URL Set-Variable -Name SA_NAME -Value ${CLUSTER_NAME}-sa Set-Variable -Name SA_EMAIL -Value ${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
サービス アカウントを設定する
ビルドが Container Registry から読み書きする際に使用する Google Cloud サービス アカウント(GSA)とサービス アカウント キーを作成します。別のコンテナ レジストリを使用している場合は、レジストリにアクセスするための認証情報の取得方法が異なるため、この手順は異なります。
Kf で使用するサービス アカウントを作成します。
gcloud beta iam service-accounts create ${SA_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --description="gcr.io admin for ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"
Container Registry からの読み取り/書き込みに必要な
storage.admin
ロールをサービス アカウントに割り当てます。gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin"
サービス アカウント キーを作成します。
temp_dir=$(mktemp -d)
key_path=${temp_dir}/key.json
gcloud iam service-accounts keys create --iam-account ${SA_EMAIL} ${key_path}
key_json=$(cat ${key_path})
rm -rf ${temp_dir}
クラスタにソフトウェアの依存関係をインストールする
Cloud Service Mesh をインストールします。
Cloud Service Mesh のインストール ガイドに従って、Cloud Service Mesh をインストールします。
Google Distributed Cloud の場合は、Google Distributed Cloud の外部 IP アドレスを構成するの説明に従って、クラスタに割り振られた IP を
loadBalancerIP
に設定します。
Tekton をインストールします。
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.65.1/release.yaml"
Kf のインストール
Kf CLI をインストールします。
Linux
このコマンドを実行すると、システム上のすべてのユーザーに Kf CLI がインストールされます。Cloud Shell のタブに表示されている手順に沿ってインストールします。
gcloud storage cp gs://kf-releases/v2.11.27/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
このコマンドを実行すると、システム上のすべてのユーザーに
kf
がインストールされます。gcloud storage cp gs://kf-releases/v2.11.27/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
bash
を使用している場合、このコマンドを実行すると、kf
が Cloud Shell インスタンスにインストールされます。他のシェルの場合は手順の変更が必要になることがあります。mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.11.27/kf-linux ~/bin/kf
chmod a+x ~/bin/kf
echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
Windows
このコマンドを実行すると、
kf
が現在のディレクトリにダウンロードされます。現在のディレクトリ以外の場所から呼び出す場合は、その場所をパスに追加します。gcloud storage cp gs://kf-releases/v2.11.27/kf-windows.exe kf.exe
オペレーターをインストールします。
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.27/operator.yaml"
Kf のオペレーターを構成します。
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.27/kfsystem.yaml"
Docker 認証情報用の Kubernetes Secret を作成する
Kf 名前空間に、上記のサービス アカウントの設定で作成した Docker 認証情報の Kubernetes Secret を作成します。次に、ソースのアップロード用に Kubernetes Secret を subresource-apiserver
Deployment に適用します。
Kf オペレーターを有効にして、Container Registry をコンテナ レジストリとして使用するように更新します。
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': {'featureFlags': {'enable_appdevexperience_builds': true}, 'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
export CONTAINER_REGISTRY=gcr.io/${CLUSTER_PROJECT_ID}
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry':'${CONTAINER_REGISTRY}'}}}]"
kf
名前空間が Kf オペレーターによって作成されたことを確認します。この処理が完了するまで数分かかることがあります。kubectl get namespace kf
Docker レジストリで使用する Kubernetes Secret を作成します。
export secret_name=kf-gcr-key-${RANDOM}
kubectl -n kf create secret docker-registry ${secret_name} \ --docker-username=_json_key --docker-server ${DOCKER_SERVER} \ --docker-password="${key_json}"
Kf オペレーターを更新して、Docker 認証情報を含む Secret を指定します。
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
インストールを検証する
kf doctor --retries=20