The following sections describe how to update clusters.

The cluster update feature has different capabilities depending on the Pipeline edition you use:

  • Open Source: with limited features, and only mandatory capabilities.
  • Enterprise: with enhanced features, and complete update flow.

Note: In our online Banzai Cloud Pipeline Enterprise Preview environment you can use the Enterprise version of this feature.

Control Plane Kubernetes version upgrade 🔗︎

Pipeline supports upgrading Kubernetes Control Planes.

Limitations 🔗︎

The cluster version upgrade feature is currently supported only for EKS clusters.

Pipeline executes the update procedure described in the official EKS documentation.

  • The open-source version of the EKS Control Plane upgrade does only step 1-3. from the official EKS update guide. It updates the Kubernetes version with the AWS EKS API, waits for the update to finish, and stores the new version in the database.
  • The enterprise version of the EKS Control Plane upgrade completes all steps from the official EKS update guide.

Steps 🔗︎

To upgrade an EKS control plane, complete the following steps.

  1. Update your Banzai CLI tool to the latest version.

  2. Select the cluster to update:

    The easiest way to execute subsequent kubectl and banzai commands on a Pipeline-managed cluster is to use the banzai cluster shell command. It will let you interactively select a cluster, and open a subshell with the proper Kubernetes context defined:

    banzai cluster shell
    
  3. Compare the Kubernetes versions of your control plane and your node pools.

    If your nodes are more than one Kubernetes minor version older than your control plane, then you must upgrade your nodes to a newer Kubernetes minor version before you update your cluster’s Kubernetes version, following the node pool update documentation.

    banzai cluster get
    Id    Name         Distribution  Location      Version  CreatorName  CreatedAt             Status    StatusMessage                  
    4181  update-test  eks           eu-west-1     1.15.10  bonifaido    2020-09-04T12:08:49Z  RUNNING   Cluster is running
    
    kubectl get nodes
    NAME                   STATUS    ROLES   AGE      VERSION
    master.example.com     Ready     master  1h       v1.15.x+x.x.x.el7
    worker1.example.com    Ready     <none>  1h       v1.15.x+x.x.x.el7
    worker2.example.com    Ready     <none>  1h       v1.15.x+x.x.x.el7
    
  4. Upgrade the control plane to a newer Kubernetes version.

    Note: Only one minor version can be updated at a time, so if you are on 1.15 and you would like to update to 1.17 you first have to update to 1.16 and than to 1.17.

    • If you run the command interactively, the CLI tries to find the right Kubernetes version to update to (1.16 in this example):

      $ banzai cluster update
      Id    Name         Distribution  Location   Version  CreatorName  CreatedAt             Status   StatusMessage     
      4181  update-test  eks           eu-west-1  1.15.10  bonifaido    2020-09-04T12:08:49Z  RUNNING  Cluster is running
      ? Do you want to UPDATE the cluster? Yes
      ? Which version you wish to update to? 1.16
      INFO[0016] cluster is being updated
      INFO[0016] you can check its status with the command `banzai cluster get "update-test"`
      
    • If you know the Kubernetes version to upgrade to, run the following command:

      $ banzai cluster update <<EOF
      {"version":"1.16"}
      EOF
      INFO[0000] cluster is being updated
      INFO[0000] you can check its status with the command `banzai cluster get "update-test"`
      
  5. Cluster updates are asynchronous, and take about the same time as starting a cluster. During an update, the cluster status is UPDATING (this status transition is eventually consistent). When the update is complete (either Failed or Successful), the cluster status becomes RUNNING.

Node pool update 🔗︎

Once your Kubernetes control plane is updated, you can update the worker nodes as well. Follow the directions at Upgrading the node pools of a cluster.