Kubernetes - validate deployments

5/6/2019

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?

-- Helmut Januschka
kubernetes

4 Answers

5/6/2019

use --dry-run option in the apply/create command to check the syntax.

-- P Ekambaram
Source: StackOverflow

5/6/2019

Set a readiness probe and use kubectl rollout status deployment <deployment_name> to see the deployment rollout status

-- Nicolas Pepinster
Source: StackOverflow

5/6/2019

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

-- Vasily Angapov
Source: StackOverflow

5/6/2019

You probably want to use kubectl wait https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#wait

It lets you wait for a specific condition of a specific object In your case:

kubectl -n namespace \
             wait --for=condition=Available --timeout=32s \     
             deployment/name
-- Shai Katz
Source: StackOverflow