Cloudbuild不触发新的pod部署,在命名空间GKE中找不到资源



我一直在玩GCP触发器,每次向Github回购进行推送时都会部署一个新的pod。我已经设置好了所有内容,docker映像被推送到GCP容器注册表,触发器成功完成,没有任何错误。我使用构建管道生成的$SHORT_SHA标记作为我的标记。但是,新的吊舱部署不起作用。我不确定问题出在哪里,因为每次新的推送都会修改代码库,只是为了测试部署。我已经学习了谷歌关于触发器的一些教程,但我不明白到底是什么问题,以及为什么新推送的图像没有得到部署。

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

  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

休息似乎一切都很好。

相关内容

  • 没有找到相关文章

最新更新