Using kubectl set image to update image of initContainer

3/21/2018

Currently, to update a k8s deployment image, we use the kubectl set image command like this:

kubectl set image deployment/deployment_name container=url_to_container

While this command updates the URL used for the main container in the deployment, it does not update the URL for the initContainer also set within the deployment.

Is there a similar kubectl command I can use to update the initContainer to the same URL?

-- Max Woolf
kubernetes

2 Answers

3/21/2018

The documentation seems to suggests that only containers are concerned.

Maybe you could switch to kubectl patch ?

(I know it's more tedious...)

kubectl patch deployment/deployment_name --patch "{\"spec\": {\"template\": {\"spec\": {\"initContainers\": [{\"name\": \"container_name\",\"image\": \"url_to_container\"}]}}}}"
-- Hiruma
Source: StackOverflow

4/3/2020

Since the accepted answer, the team developed the ability to set image for Kubernetes init containers. Using the same command, simply use the init container name for the container part of the command you supplied.

kubectl set image deployment/deployment_name myInitContainer=url_to_container

In case you want to update both container images in a single command, use:

kubectl set image deployment/deployment_name myInitContainer=url_to_container container=url_to_container
-- Yonatan Wilkof
Source: StackOverflow