【发布时间】:2021-12-23 07:27:33
【问题描述】:
考虑一下这个名为 myapp 的基本 rest 应用程序的部分 k8s 部署清单
spec:
replicas: 1
...
containers:
name: myapp
image: us.gcr.io/my-org/myapp.3
...
resources:
limits:
cpu: 1000m
memory: 1.5Gi
我们将增量构建存储在 Google Container Registry (GCR) 中,例如 (myapp.1, myapp.2, myapp.3)。在当前设置中,我们的 CI 系统 (Jenkins) 执行以下操作:
- Docker 构建新镜像
myapp.4并上传到 GCR - 运行
kubectl set image myapp.4以更新部署。
这适用于大多数部署,但部署清单本身的更改呢?例如,如果我们将resource > cpu 更改为 1500m,我们现在必须手动运行kubectl apply。 这一步需要自动化,这让我明白了我的观点: 除了使用kubectl set image,构建系统本身不能每次都运行kubectl apply 吗?在 CI/CD 管道中何时使用 kubectl set image 与 kubectl apply 比较合适?
只要提供了新图像,kubectly apply 不会同时处理图像更新和其他配置更改吗?如果是这样,仅kubcetl set image 的优点/缺点是什么?
PS - 我们的部署很简单,主要依赖于单个副本,不一定需要 100% 的正常运行时间。
【问题讨论】:
标签: jenkins kubernetes google-cloud-platform deployment kubectl