kubectl set image deployment/$DEPLOYMENT_EXTENSION $INSTANCE_NAME=gcr.io/$PROJECT_ID/$DOCKER_REPOSITORY:latest
我使用此命令将新创建的图像加载到我现有的集群中(我的应用程序的更新版本)。但是当我这样做之后,再转到该站点,我看不到任何更改。
spec:
terminationGracePeriodSeconds: 30
containers:
- name: booknotes
image: gcr.io/my-image:latest
imagePullPolicy: Always
我还将这两行添加到了deployment.yaml文件中,并将其应用于我的cluser:
imagePullPolicy: Always
terminationGracePeriodSeconds: 30
但是它仍然不起作用。可能是因为我使用了:latest
标签吗?还是不相关?如果您有一些成见,请告诉我。另外,如果您需要其他信息,我会附上它!
gitlab-ci.yml
stages:
- build
- docker-push
- deploy
cache:
paths:
- node_modules/
build:
stage: build
image: node:latest
script:
- yarn install
- npm run build
artifacts:
paths:
- dist/
only:
- master
docker:
stage: docker-push
image: docker:18.09.7
services:
- docker:18.09.7-dind
- google/cloud-sdk:latest
script:
- echo $GCP_ACCESS_JSON > $CI_PIPELINE_ID.json
- cat $CI_PIPELINE_ID.json | docker login -u _json_key --password-stdin $GCP_REGION
- docker build -t gcr.io/$PROJECT_ID/$DOCKER_REPOSITORY:latest .
- docker push gcr.io/$PROJECT_ID/$DOCKER_REPOSITORY:latest
only:
- master
test:
stage: deploy
image: google/cloud-sdk:latest
script:
- echo $GCP_ACCESS_JSON > $CI_PIPELINE_ID.json
- gcloud auth activate-service-account $GCP_CE_PROJECT_EMAIL --key-file $CI_PIPELINE_ID.json --project $GCP_PROJECT_ID
- gcloud container clusters get-credentials $CLUSTER_NAME --zone $ZONE --project $PROJECT_NAME
- kubectl set image deployment/$DEPLOYMENT_EXTENSION $INSTANCE_NAME=gcr.io/$PROJECT_ID/$DOCKER_REPOSITORY:latest
only:
- master
答案 0 :(得分:2)
这个问题,症状和原因与[this],(Google cloud platform creating a pipeline with Kubernetes and replacing the same container)非常接近
在您的Gitlab-CI管道中应用相同的解决方案(使用全局变量来更改图像标签,并在每次部署新标签时强制Kubernetes进行部署和部署)。
如果您有困难,可以在Gitlib-CI上为您提供帮助。
答案 1 :(得分:0)
您是正确的,最新标签不会触发广告连播的重新部署。相反,您可以设置映像,然后扩展部署。
kubectl set image deployment/alpine alpine=alpine:latest
kubectl scale deployment --replicas=0
kubectl scale deployment --replicas=1
另一种选择是设置图像,然后修补注释或更改某些Yaml字段。