Upgrade Confluent for Kubernetes and Confluent Platform

Before you start the upgrade process, make sure your Kubernetes cluster is among the Supported Environments for the target version of Confluent for Kubernetes (CFK).

In general, it is best to minimize the number of changes occurring at the same time. For the purposes of upgrading Confluent Platform from one version to another, we recommend that you perform this upgrade separate from making other changes to your clusters, such as scaling up, changing configuration, or rotating credentials.

Upgrade Confluent for Kubernetes

When you upgrade a previous version of Confluent for Kubernetes (CFK) to 2.0.3, all Confluent Platform components will do a rolling restart.

To upgrade CFK:

  1. Get the latest CFK chart.

    • From the Helm repo:
    helm repo update --namespace <namespace>
  2. Upgrade Confluent Platform custom resource definitions (CRDs):

    kubectl apply -f  confluent-for-kubernetes/crds/ \
      --namespace <namespace>
  3. Upgrade CFK to 2.0.3:

    helm upgrade --install confluent-operator \
      confluentinc/confluent-for-kubernetes \
      --namespace <namespace>

Disable component reconciliation

Temporarily disable resource reconciliation for each namespace where you have deployed the Confluent Platform component.

If you do not disable the reconcile operations before you run the upgrade, the component will begin rolling restarts and the pods may go into the CrashLoopBackOff status.

You need the component’s custom resource (CR) kind and the cluster name.

  1. Get the component CR kind:

    kubectl api-resources --api-group=platform.confluent.io \
      -namespace <namespace>

    For the ConfluentRolebinding CRD kind, get the following CR kind:

    kubectl get cfrb -namespace <namespace>
  2. Get component cluster name:

    kubectl get <component CR kind> -namespace <namespace>
  3. Disable the resource reconciliation for the component:

    kubectl annotate <component CR kind> <cluster name> \
      platform.confluent.io/block-reconcile=true \
      --namespace <namespace>

    For example, where the Kafka CR kind is kafka and the cluster name is kafla, the command to disable resource reconciliation would be:

    kubectl annotate kafka kafka \
      platform.confluent.io/block-reconcile=true \
      -namespace <namespace>

Upgrade Confluent Platform

Upgrade each Confluent Platform component as below.

  1. Temporarily disable resource reconciliation for the component as describe in Disable component reconciliation.

  2. Upgrade the component:

    kubectl apply -f <component CR> --name <namespace>
  3. Enable reconciliation:

    kubectl annotate <component CR kind> <cluster name> \
      platform.confluent.io/block-reconcile- \
      --namespace <namespace>