I have a namespace namespace
– which has ~10-15 deployments.
Creating a big yaml file, and apply it on a “deploy”.
How do i validate, wait, watch, block, until all deployments have been rolledout ?
currently i am thinking of:
- get list of deployments
- foreach deployment – make api call to get status
- once all deployments are “green” – end process, signaling deployment/ship is done.
what are the status’es of deployments, is there already a similar tool that can do it? https://github.com/Shopify/kubernetes-deploy is kind of what i am searching for, but it forces a yml structure and so on.
what would be the best approach?
4
Answers
You’d better use Helm for managing deployments. Helm allows you to create reusable templates that can be applied to more than one environment. Read more here: https://helm.sh/docs/chart_template_guide/#getting-started-with-a-chart-template
You can create one big chart for all your services or you can create separate Helm charts for each your service.
Helm also allows you to run tests after deployment is done. Read more here: https://helm.sh/docs/developing_charts/#a-breakdown-of-the-helm-test-hooks
You probably want to use
kubectl wait
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#waitIt lets you wait for a specific condition of a specific object
In your case:
Set a readiness probe and use
kubectl rollout status deployment <deployment_name>
to see thedeployment
rollout statususe –dry-run option in the apply/create command to check the syntax.