How can I edit a Deployment without modify the file manually?

前端 未结 4 723
情话喂你
情话喂你 2020-12-01 04:18

I have defined a Deployment for my app:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 2
  template:
           


        
相关标签:
4条回答
  • 2020-12-01 04:50

    (I would have posted this as a comment if I had enough reputation)

    Yes, as per http://kubernetes.io/docs/user-guide/kubectl/kubectl_patch/ both JSON and YAML formats are accepted.

    But I see that all the examples there are using JSON format. Filed https://github.com/kubernetes/kubernetes.github.io/issues/458 to add a YAML format example.

    0 讨论(0)
  • 2020-12-01 04:57

    You could do it via the REST API using the PATCH verb. However, an easier way is to use kubectl patch. The following command updates your app's tag:

    kubectl patch deployment myapp-deployment -p \
      '{"spec":{"template":{"spec":{"containers":[{"name":"myapp","image":"172.20.34.206:5000/myapp:img:3.0"}]}}}}'
    

    According to the documentation, YAML format should be accepted as well. See Kubernetes issue #458 though (and in particular this comment) which may hint at a problem.

    0 讨论(0)
  • 2020-12-01 05:08

    I have recently built a tool to automate deployment updates when new images are available, it works with Kubernetes and Helm:

    https://github.com/rusenask/keel

    You only have to label your deployments with Keel policy like keel.sh/policy=major to enable major version updates, more info in the readme. Works similarly with Helm, no additional CLI/UI required.

    0 讨论(0)
  • 2020-12-01 05:12

    There is a set image command which may be useful in simple cases

    Update existing container image(s) of resources. Possible resources include (case insensitive): 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/

    $ kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
    deployment "nginx-deployment" image updated
    

    http://kubernetes.io/docs/user-guide/deployments/

    0 讨论(0)
提交回复
热议问题