我已经为我的应用定义了一个Deployment:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: 172.20.34.206:5000/myapp_img:2.0
ports:
- containerPort: 8080
现在,如果我想将我的应用的镜像从2.0更新到3.0,我会这样做:
$ kubectl edit deployment/myapp-deployment
vim
打开。我将图像版本从2.0更改为3.0并保存。
如何实现自动化?有没有一种方法可以只运行一个命令?类似于:
$ kubectl edit deployment/myapp-deployment --image=172.20.34.206:5000/myapp:img:3.0
我想使用Kubernetes API REST,但我不理解documentation。
4条答案
按热度按时间vbopmzt11#
您可以通过REST API使用PATCH动词来完成。但是,更简单的方法是使用kubectl patch。以下命令更新应用的标记:
根据文档,YAML格式也应该被接受。参见Kubernetes issue #458(特别是这条评论),这可能暗示了一个问题。
ubby3x7f2#
有一个
set image
命令,在简单情况下可能很有用更新资源的现有容器映像。可能的资源包括(不区分大小写):pod(po)、replicationcontroller(rc)、deployment(deploy)、daemonset(ds)、job、replicaset(rs)
kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N
http://kubernetes.io/docs/user-guide/kubectl/kubectl_set_image/
http://kubernetes.io/docs/user-guide/deployments/
g6ll5ycj3#
(如果我有足够的声誉,我会把这篇文章作为评论发表的)
是的,根据http://kubernetes.io/docs/user-guide/kubectl/kubectl_patch/,JSON和YAML格式都可以接受。
但我看到所有的例子都使用JSON格式。归档https://github.com/kubernetes/kubernetes.github.io/issues/458以添加YAML格式示例。
ha5z0ras4#
我最近构建了一个工具,可以在新镜像可用时自动更新部署,它可以与Kubernetes和Helm一起使用:
https://github.com/rusenask/keel
您只需使用Keel策略(如
keel.sh/policy=major
)标记部署即可启用主要版本更新,更多信息请参阅自述文件。与Helm类似,无需额外的CLI/UI。