【发布时间】:2021-04-13 05:30:47
【问题描述】:
我已经使用 GitHub 上的源代码设置了一个 Google Cloud Platform kubernetes 集群(和 Container Registry)。源代码被分成文件夹,每个微服务都有单独的 Dockerfile。
我想使用 GitHub 操作设置 CI/CD。
据我了解,default GKE workflow 将使用机密连接到 gcloud,构建映像并将它们推送到 Container Registry。然后执行更新。
我的问题
- 部署如何执行?
- kustomize 有什么用途?
- 除了 GKE 密钥/令牌之外,我是否必须在 gcloud 上配置任何其他内容
- 假设我想更新多个 docker 镜像。构建多个图像并推送它们就足够了吗?如下所示(为了清楚起见,稍微简化了一点),或者我是否还必须修改 Deploy 作业:
- name: Build
run: |-
docker build -t "gcr.io/$PROJECT_ID/$IMAGE_1:$GITHUB_SHA" service1/.
docker build -t "gcr.io/$PROJECT_ID/$IMAGE_2:$GITHUB_SHA" service2/.
docker build -t "gcr.io/$PROJECT_ID/$IMAGE_3:$GITHUB_SHA" service3/.
- name: Publish
run: |-
docker push "gcr.io/$PROJECT_ID/$IMAGE_1:$GITHUB_SHA"
docker push "gcr.io/$PROJECT_ID/$IMAGE_2:$GITHUB_SHA"
docker push "gcr.io/$PROJECT_ID/$IMAGE_3:$GITHUB_SHA"
这是来自 GKE 工作流的部署片段:
# Deploy the Docker image to the GKE cluster
- name: Deploy
run: |-
./kustomize edit set image gcr.io/PROJECT_ID/IMAGE:TAG=gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA
./kustomize build . | kubectl apply -f -
kubectl rollout status deployment/$DEPLOYMENT_NAME
kubectl get services -o wide
【问题讨论】:
标签: kubernetes google-cloud-platform continuous-integration google-kubernetes-engine continuous-deployment