首页 > 解决方案 > github 操作 GKE 工作流 - 部署说明

问题描述

我已经在 GitHub 上使用源代码建立了一个 Google Cloud Platform kubernetes 集群(和 Container Registry)。源代码分为文件夹,每个微服务都有单独的 Dockerfile。

我想使用 GitHub 操作设置 CI/CD。

据我了解,默认的 GKE 工作流将使用秘密连接到 gcloud,构建图像并将它们推送到 Container Registry。然后执行更新。

我的问题

    - 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

标签: kubernetesgoogle-cloud-platformcontinuous-integrationgoogle-kubernetes-enginecontinuous-deployment

解决方案


部署如何执行?

要了解如何部署或运行​​此工作流程,请参阅此文档

自定义是为了什么?

kustomize 是用于应用程序配置的配置管理

除了 GKE 密钥/令牌之外,我是否必须在 gcloud 上配置任何其他内容

除非您为验证工作流程添加额外的安全层,否则您不必这样做。

假设我想更新多个 docker 镜像。构建多个图像并推送它们就足够了吗?如下所示(为了清楚起见,稍微简化了一点),还是我还必须修改 Deploy 作业

我认为不需要修改部署工作。构建多个图像并将它们推送到 GCR 就足够了


推荐阅读