本文件說明如何在 Google Distributed Cloud 中建立的內部部署叢集 (在 VMware 或在裸機上) 上安裝 Kf 及其依附元件。
如果您已熟悉在 Google Cloud的 GKE 叢集中安裝 Kf 的程序,這裡說明在內部部署程序的主要差異:
- 您不必安裝 Config Connector 即可進行內部部署。
- 內部部署程序使用 Docker 憑證,而非 Workload Identity。
事前準備
Google Distributed Cloud 需求條件
符合 Cloud Service Mesh 需求條件的使用者叢集。
已設定為記錄及監控。
已向機群註冊:
Kf 相關規定
請參閱 Kif 依附元件和架構頁面,查看及瞭解 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
設定服務帳戶
建立 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}"
將
storage.admin
角色指派給服務帳戶,以便讀取/寫入 Container Registry: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 1.23.3-asm.1+config1 版。
請按照 Cloud Service Mesh 安裝指南操作。
安裝 Cloud Service Mesh 後,您必須按照閘道安裝指南建立入口閘道。
如果是在 Google Distributed Cloud 上,請將
loadBalancerIP
設為叢集的 IP 位址,如「為 Google Distributed Cloud 設定外部 IP 位址」一文所述。
安裝 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/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
這項指令會為系統上的所有使用者安裝
kf
。gcloud storage cp gs://kf-releases/v2.11.28/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
如果您使用
bash
,這個指令會在 Cloud Shell 執行個體上安裝kf
。如果您使用其他殼層,可能需要修改指令。mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.11.28/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.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 密鑰
在 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