skip to Main Content

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


  1. 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

    Login or Signup to reply.
  2. 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
    
    Login or Signup to reply.
  3. Set a readiness probe and use kubectl rollout status deployment <deployment_name> to see the deployment rollout status

    Login or Signup to reply.
  4. use –dry-run option in the apply/create command to check the syntax.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search