我在使用CI更新我的kubernetes群集时,只要对图像进行更新。每当图像被推送并具有最新标记时,kubectl就会应用现有部署,但不会更新任何内容。
这就是运行
$ kubectl apply --record --filename /tmp/deployment.yaml
我的目标是运行apply以执行滚动部署。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: api
spec:
replicas: 1
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: us.gcr.io/joule-eed41/api:latest
imagePullPolicy: Always
ports:
- containerPort: 1337
args:
- /bin/sh
- -c
- echo running api;npm start
env:
- name: NAMESPACE
valueFrom:
configMapKeyRef:
name: config
key: NAMESPACE
答案 0 :(得分:1)
正如其他人所说,有一个特定的标签。 使用以下命令
设置新图像kubectl set image deployment / deployment_name deployment_name = image_name:image_tag
在你的情况下,它将是
kubectl set image deployment / api api = us.gcr.io / joule-eed41 / api:0.1
答案 1 :(得分:0)
@ ksholla20提到在许多(大多数?)情况下,使用kubectl set image
是一个不错的选择。
但是,如果您不能更改图片标签,请考虑使用:
1)kubectl rollout restart deployment/<name>
(reference)。
2)kubectl patch deployment <name> -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"version\":\"$CURRENT_BUILD_HASH_OR_DATE\"}}}}}}"
(reference)
(*)注意,patch
命令允许您更改部署(或选择的任何其他对象)中的特定属性,例如标签选择器和 pod标签< / em>或其他属性,例如示例中的NAMESPACE
环境变量的值。