如何解决Cloudbuild不会触发新的Pod部署
我一直在与GCP触发器一起玩,以在每次推送到Github存储库时部署新的Pod。我已经完成所有设置,并将docker映像推送到GCP容器注册表,并且触发器成功完成,没有任何错误。我将由构建管道生成的 $ SHORT_SHA 标签用作标签。但是,但是,新的pod部署不起作用。我不确定是什么问题,因为我也在每次尝试测试部署时都在修改代码库。我已经看过Google关于Triggers的几本教程,但是我无法理解到底是什么问题以及为什么新推送的映像没有部署。
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
解决方法
我建议对您的云构建进行一些更改,以便在 EKS 集群中部署应用程序。
cloudbuild.yaml
- 在构建和推送阶段,使用
gcr.io/$PROJECT_ID/<image_name>:$SHORT_SHA
将 arg 更改为gcr.io/$PROJECT_ID/sample-image:latest
。 - 生成清单阶段 - 您可以跳过/删除阶段。
-
gke-deploy
阶段 - 删除图像步骤。
kubernetes.yaml
- 在规范中 - 您可以将映像提及为
gcr.io/$PROJECT_ID/sample-image:latest
,它将始终在每次部署时使用latest
。
一切似乎都很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。