alex
alex

Reputation: 2193

How to update all resources that were created with kubernetes manifest?

I use a kubernetes manifest file to deploy my code. My manifest typically has a number of things like Deployment, Service, Ingress, etc.. How can I perform a type of "rollout" or "restart" of everything that was applied with my manifest?

I know I can update my deployment say by running

kubectl rollout restart deployment <deployment name> 

but what if I need to update all resources like ingress/service? Can it all be done together?

Upvotes: 1

Views: 2526

Answers (2)

mario
mario

Reputation: 11098

This is a Community Wiki answer so feel free to edit it and add any additional details you consider important.

As Burak Serdar has already suggested in his comment, you can simply use:

kubectl apply -f your-manifest.yaml

and it will apply all the changes you made in your manifest file to the resources, which are already deployed.

However note that running:

kubectl rollout restart -f your-manifest.yaml

makes not much sense as this file contains definitions of resources such as Services to which kubectl rollout restart cannot be applied. In consequence you'll see the following error:

$ kubectl rollout restart -f deployment-and-service.yaml
deployment.apps/my-nginx restarted
error: services "my-nginx" restarting is not supported

So as you can see it is perfectly possible to run kubectl rollout restart against a file that contains definitions of both resources that support this operation and those which do not support it.

Running kubectl apply instead will result in update of all the resources which definition has changed in your manifest:

$ kubectl apply -f deployment-and-service.yaml
deployment.apps/my-nginx configured
service/my-nginx configured

Upvotes: 2

Jonas
Jonas

Reputation: 128807

I would recommend you to store your manifests, e.g. Deployment, Service and Ingress in a directory, e.g. <your-directory>

Then use kubectl apply to "apply" those files to Kubernetes, e.g.:

kubectl apply -f <directory>/

See more on Declarative Management of Kubernetes Objects Using Configuration Files.

When your Deployment is updated this way, your pods will be replaced with the new version during a rolling deployment (you can configure to use another deployment strategy).

Upvotes: 1

Related Questions