0

每次推送到 Github 存储库时,我一直在使用 GCP 触发器来部署一个新的 pod。我已经完成所有设置,docker 镜像被推送到 GCP 容器注册表,触发器成功完成,没有任何错误。我使用构建管道生成的$SHORT_SHA标签作为我的标签。但是,新的 pod 部署不起作用。我不确定问题是什么,因为我正在修改代码库以及每次新推送只是为了测试部署。我已经按照 Google 关于触发器的几个教程进行操作,但我无法理解究竟是什么问题以及为什么新推送的图像没有被部署。

cloudbuild.yaml

  - name: maven:3-jdk-8
    id: Maven Compile
    entrypoint: mvn
    args: ["package", "-Dmaven.test.skip=true"]
  - name: 'gcr.io/cloud-builders/docker'
    id: Build
    args:
    - 'build'
    - '-t'
    - 'us.gcr.io/$PROJECT_ID/<image_name>:$SHORT_SHA'
    - '.'
   
  - name: 'gcr.io/cloud-builders/docker'
    id: Push
    args:
    - 'push'
    - 'us.gcr.io/$PROJECT_ID/<image_name>:$SHORT_SHA'
  - name: 'gcr.io/cloud-builders/gcloud'
    id: Generate manifest
    entrypoint: /bin/sh
    args:
    - '-c'
    - |
       sed "s/GOOGLE_CLOUD_PROJECT/$SHORT_SHA/g" kubernetes.yaml
  - name: "gcr.io/cloud-builders/gke-deploy"
    args:
    - run
    - --filename=kubernetes.yaml
    - --image=us.gcr.io/$PROJECT_ID/<image_name>:$SHORT_SHA
    - --location=us-central1-c
    - --cluster=cluster-1

Kubernetes.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: <deployment_name>
spec:
  replicas: 1
  selector:
    matchLabels:
      app: <container_label>
  template:
    metadata:
      labels:
        app: <container_label>
    spec:
      nodeSelector:
        cloud.google.com/gke-nodepool: default-pool
      containers:
      - name: <container_name>
        image: us.gcr.io/<project_id>/<image_name>:GOOGLE_CLOUD_PROJECT
        ports:
        - containerPort: 8080
apiVersion: v1
kind: Service
metadata:
  name: <service-name>
spec:
  selector:
    app: <selector_name>
  ports:
  - port: 80
    targetPort: 8080
  type: LoadBalancer

4

1 回答 1

0

我建议对您的云构建进行一些更改,以便在 EKS 集群中部署应用程序。

cloudbuild.yaml

  1. 在构建和推送阶段将 arg 更改为gcr.io/$PROJECT_ID/<image_name>:$SHORT_SHA使用gcr.io/$PROJECT_ID/sample-image:latest.
  2. 生成清单阶段 - 您可以跳过/删除阶段。
  3. gke-deploy阶段 - 删除图像步骤。

Kubernetes.yaml

  1. 在规范中 - 您可以提及图像,因为gcr.io/$PROJECT_ID/sample-image:latest它总是会latest在每次部署时使用。

休息一切似乎都很好。

于 2021-01-29T13:44:07.997 回答