本文档介绍了如何在 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 中的组件的访问权限。
Tekton:供 Kf 使用。这不是面向用户的服务。
专用 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.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}"
为服务账号分配对 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 v1.12。
按照 Cloud Service Mesh 安装指南进行操作。
安装 Cloud Service Mesh 后,您必须使用网关安装指南创建入站流量网关。
如果是在 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/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
此命令会为系统上的所有用户安装
kf
。gcloud storage cp gs://kf-releases/v2.7.3/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
如果您使用
bash
,此命令会在 Cloud Shell 实例上安装kf
;您可能需要为其他 Shell 修改说明。mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.7.3/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.7.3/kf-windows.exe kf.exe
安装 operator:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/operator.yaml"
为 Kf 配置 operator:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/kfsystem.yaml"
为 Docker 凭据创建 Kubernetes Secret
在 Kf 命名空间中,为您在上面的服务账号设置中创建的 Docker 凭据创建 Kubernetes Secret。然后,将 Kubernetes Secret 修补到 subresource-apiserver
部署以上传来源。
启用并更新 Kf operator,以将 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 operator 以指定包含 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