本文說明如何在 Google Distributed Cloud 或 Google Distributed Cloud 的地端部署叢集上安裝 Kf 及其依附元件。
如果您已熟悉在 Google Cloud的 GKE 叢集上安裝 Kf 的程序,地端部署程序的主要差異如下:
- 如果是地端部署安裝,則不必安裝 Config Connector。
- 地端部署程序會使用 Docker 憑證,而非 Workload Identity。
事前準備
GKE Enterprise 需求條件
符合 Cloud Service Mesh 需求條件的使用者叢集。
已設定記錄與監控功能。
已在 GKE Enterprise 機群中註冊:
瞭解如何註冊叢集。
Kf 需求
在「Kf 依附元件和架構」頁面中,查看並瞭解 Kf 元件的存取權。
供 Kf 使用的 Tekton。這項服務不會對使用者顯示。
專屬 Google 服務帳戶。
準備新的 GKE Enterprise 叢集和相關服務
設定環境變數
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設定服務帳戶
建立 Google Cloud 服務帳戶 (GSA) 和服務帳戶金鑰,供建構作業從 Container Registry 讀取/寫入資料。如果您使用其他容器登錄檔,取得登錄檔存取憑證的方式可能不同,因此這個步驟也會有所差異。
建立 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 1.12 版。
按照 Cloud Service Mesh 安裝指南操作。
安裝 Cloud Service Mesh 後,您必須使用閘道安裝指南建立 Ingress 閘道。
如果是 Google Distributed Cloud,請按照「為 Google Distributed Cloud 設定外部 IP 位址」一文的說明,將
loadBalancerIP設為分配給叢集的 IP 位址。
安裝 Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.29.0/release.yaml"
安裝 Kf
安裝 Kf CLI:
Linux
這項指令會為系統上的所有使用者安裝 Kf CLI。按照「Cloud Shell」分頁中的操作說明,為自己安裝。
gcloud storage cp gs://kf-releases/v2.7.3/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
這項指令會為系統上的所有使用者安裝
kf。gcloud storage cp gs://kf-releases/v2.7.3/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
如果您使用
bash,這個指令會在 Cloud Shell 執行個體上安裝kf。如果是其他殼層,可能需要修改指令。mkdir -p ~/bingcloud storage cp gs://kf-releases/v2.7.3/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
這項指令會將
kf下載至目前目錄。如要從目前目錄以外的任何位置呼叫,請將其新增至路徑。gcloud storage cp gs://kf-releases/v2.7.3/kf-windows.exe kf.exe安裝運算子:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/operator.yaml"
設定 Kf 的運算子:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/kfsystem.yaml"
建立 Docker 憑證的 Kubernetes 密鑰
在 Kf 命名空間中,為您在服務帳戶設定中建立的 Docker 憑證建立 Kubernetes 密鑰。然後修補 Kubernetes 密鑰,以用於來源上傳的 subresource-apiserver 部署作業。
啟用並更新 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
建立 Kubernetes 密鑰,以搭配 Docker 登錄檔使用。
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 憑證的密鑰。
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
驗證安裝
kf doctor --retries=20