默认情况下使用deployment发布新版本发布是要使用新的镜像tag
先演示一下常规部署
准备Dockerfile
FROM nginx
ENV app_version=v1
传镜像到私库里面
docker login -u <USER> -p <PASSWORD> docker-registry.default.svc:5000 docker build -t=docker-registry.default.svc:5000/default/nginx:v1 . docker push docker-registry.default.svc:5000/default/nginx:v1
准备deployment配置 nginx.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: default spec: selector: matchLabels: app: nginx replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: docker-registry.default.svc:5000/default/nginx:v1 ports: - containerPort: 80 securityContext: privileged: true
导入配置
kubectl create -f nginx.yaml
更新应用
Dockerfile
FROM nginx
ENV app_version=v2
传镜像到私库里面
docker login -u <USER> -p <PASSWORD> docker-registry.default.svc:5000 docker build -t=docker-registry.default.svc:5000/default/nginx:v2 . docker push docker-registry.default.svc:5000/default/nginx:v2
更新deployment镜像
kubectl set image deployment/nginx nginx=docker-registry.default.svc:5000/default/nginx:v2
看一下deployment的版本,发现已经有两个版本了
kubectl rollout history deployment/nginx -n default deployments "nginx" REVISION CHANGE-CAUSE 1 <none> 2 <none>