このドキュメントでは、Google Distributed Cloud の一部として作成されたオンプレミス クラスタ(VMware 上またはベアメタル上)に Kf とその依存関係をインストールする方法について説明します。
Kf を Google Cloudの GKE クラスタにインストールする場合とオンプレミスにインストールする場合の主な違いは次のとおりです。
- オンプレミスにインストールする場合、Config Connector をインストールする必要はありません。
- オンプレミスの場合は、Workload Identity ではなく Docker 認証情報が使用されます。
始める前に
Google Distributed Cloud の要件
Cloud Service Mesh の要件を満たすユーザー クラスタ。
ロギングとモニタリング用に構成されていること。
フリートに登録されていること。
Kf の要件
Kf の依存関係とアーキテクチャのページで、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.comWindows 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.jsongcloud iam service-accounts keys create --iam-account ${SA_EMAIL} ${key_path}key_json=$(cat ${key_path})rm -rf ${temp_dir}
クラスタにソフトウェアの依存関係をインストールする
Cloud Service Mesh v1.23.3-asm.1+config1 をインストールします。
Cloud Service Mesh のインストール ガイドの手順に沿って操作します。
Cloud Service Mesh をインストールしたら、ゲートウェイ インストール ガイドを使用して Ingress ゲートウェイを作成する必要があります。
Google Distributed Cloud の場合は、Google Distributed Cloud の外部 IP アドレスを構成するの説明に従って、クラスタに割り振られた IP を
loadBalancerIPに設定します。
Tekton をインストールします。
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.68.0/release.yaml"
Kf のインストール
Kf CLI をインストールします。
Linux
このコマンドを実行すると、システム上のすべてのユーザーに Kf CLI がインストールされます。Cloud Shell のタブに表示されている手順に沿ってインストールします。
gcloud storage cp gs://kf-releases/v2.11.28/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
このコマンドを実行すると、システム上のすべてのユーザーに
kfがインストールされます。gcloud storage cp gs://kf-releases/v2.11.28/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.11.28/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
このコマンドを実行すると、
kfが現在のディレクトリにダウンロードされます。現在のディレクトリ以外の場所から呼び出す場合は、その場所をパスに追加します。gcloud storage cp gs://kf-releases/v2.11.28/kf-windows.exe kf.exeオペレーターをインストールします。
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.28/operator.yaml"
Kf のオペレーターを構成します。
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.28/kfsystem.yaml"
Docker 認証情報用の Kubernetes Secret を作成する
Kf 名前空間に、上記のサービス アカウントの設定で作成した Docker 認証情報の Kubernetes Secret を作成します。次に、ソースのアップロード用に Kubernetes Secret を subresource-apiserver Deployment に適用します。
Kf オペレーターを有効にして、Container Registry をコンテナ レジストリとして使用するように更新します。
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