Update using lifecycle automation is slow

I am trying to upgrade linkerd from stable-2.14.10 to enterprise-2.15.5 using the operator. I followed the documentation for migrating to BEL’s lifecycle automation from a Helm installation, and then tried to upgrade the control plane by following the documentation for upgrading BEL using the lifecycle automation operator.

I ran kubectl edit controlplane -n linkerd cp-update and edited spec.components.linkerd.controlPlaneConfig.version to enterprise-2.15.5 and I also populated the .license field. It took an hour until the status switched to UpToDate.

$ kubectl describe controlplane -n linkerd cp-update
# -- snip --
Events:
  Type     Reason    Age                From              Message
  ----     ------    ----               ----              -------
  Warning  Pending   64m (x2 over 81m)  buoyant-operator  control-plane update failed: control-plane not ready: linkerd control-plane configMap version [enterprise-2.15.5] but linkerd/Deployment/metrics-api has proxy version [stable-2.14.10]
  Warning  Pending   54m                buoyant-operator  control-plane update failed: control-plane not ready: linkerd control-plane configMap version [enterprise-2.15.5] but linkerd/Deployment/tap has proxy version [stable-2.14.10]
  Warning  Pending   14m                buoyant-operator  control-plane update failed: control-plane not ready: linkerd control-plane configMap version [enterprise-2.15.5] but linkerd/Deployment/tap-injector has proxy version [stable-2.14.10]
  Normal   UpToDate  4m40s              buoyant-operator  control-plane update to enterprise-2.15.5 succeeded

When I first saw those warnings, I tried to push things along by manually restarting deployments:

kubectl rollout restart -n linkerd deploy

I have two retrospective questions:

  1. Is it normal for the upgrade to take an hour? My cluster is pretty small, 15 nodes.
  2. Was it necessary for me to restart the deployments manually? (Were the warnings expected and safe to ignore?)

Hi @jennydaman ! No, that’s definitely not expected., and the restart should not have been necessary either. Are there logs from the operator that provide any useful information? Thanks!

Hey @wfresno sorry for the gap in response, I was out of office.

Unfortunately the logs weren’t kept around, but I am trying to upgrade from enterprise-2.15.5 to enterprise-2.16.0 and observing the same error.

Events:
  Type     Reason    Age   From              Message
  ----     ------    ----  ----              -------
  Normal   Updating  102m  buoyant-operator  control-plane started updating to enterprise-2.16.0
  Warning  Pending   97m   buoyant-operator  control-plane update failed: control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]

Here are the logs from the operator (note the “chris” namespace stuff are the application we are trying to mesh up):

$ kubectl logs -n linkerd-buoyant deploy/linkerd-control-plane-operator         
2024/08/25 21:24:21 maxprocs: Updating GOMAXPROCS=1: determined from CPU quota
time="2024-08-25T21:24:22Z" level=info msg="running version v0.32.0"
time="2024-08-25T21:24:22Z" level=info msg="waiting for caches to sync" client=k8s
time="2024-08-25T21:24:22Z" level=info msg="waiting for caches to sync"
time="2024-08-25T21:24:22Z" level=info msg="caches synced"
time="2024-08-25T21:24:22Z" level=info msg="caches synced" client=k8s
time="2024-08-25T21:24:22Z" level=info msg="waiting for caches to sync"
time="2024-08-25T21:24:22Z" level=info msg="caches synced"
time="2024-08-25T21:24:22Z" level=info msg=starting operator=control-plane
time="2024-08-27T18:42:55Z" level=warning msg="error parsing proxy version [stable-2.14.10] for chris-staging/chris1222-postgresql-0: versions stable-2.14.10 and enterprise-2.16.0 are not on the same channel" operator=control-plane
time="2024-08-27T18:42:55Z" level=warning msg="error parsing proxy version [stable-2.14.10] for chris-staging/chris1222-pfdcm-69c4fdbd7c-qc8t7: versions stable-2.14.10 and enterprise-2.16.0 are not on the same channel" operator=control-plane
time="2024-08-27T18:42:55Z" level=warning msg="error parsing proxy version [stable-2.14.10] for chris/pfdcm-linkerd-workaround-linkerd-nodeport-workaround-64dffpsbgd: versions stable-2.14.10 and enterprise-2.16.0 are not on the same channel" operator=control-plane
time="2024-08-27T18:42:55Z" level=warning msg="error parsing proxy version [stable-2.14.10] for chris/chris2222-server-d5c6bf799-qnfj6: versions stable-2.14.10 and enterprise-2.16.0 are not on the same channel" operator=control-plane
time="2024-08-27T18:42:55Z" level=warning msg="error parsing proxy version [stable-2.14.10] for chris/chris2222-server-d5c6bf799-lnnzv: versions stable-2.14.10 and enterprise-2.16.0 are not on the same channel" operator=control-plane
time="2024-08-27T18:42:55Z" level=info msg="linkerd-crds: installed version enterprise-2.15.5 -  target version enterprise-2.16.0 - initiating upgrade" operator=control-plane
time="2024-08-27T18:42:55Z" level=info msg=Upgrading... chart=linkerd-crds operator=control-plane release=linkerd-crds version=enterprise-2.16.0
time="2024-08-27T18:43:00Z" level=info msg="successfully upgraded" chart=linkerd-crds operator=control-plane release=linkerd-crds version=enterprise-2.16.0
time="2024-08-27T18:43:00Z" level=info msg="linkerd-control-plane: installed version enterprise-2.15.5 -  target version enterprise-2.16.0 - initiating upgrade" operator=control-plane
time="2024-08-27T18:43:00Z" level=info msg="using overrides provided by the ControlPlaneConfig field" operator=control-plane
time="2024-08-27T18:43:00Z" level=info msg=Upgrading... chart=linkerd-control-plane operator=control-plane release=linkerd-control-plane version=enterprise-2.16.0
time="2024-08-27T18:43:17Z" level=info msg="successfully upgraded" chart=linkerd-control-plane operator=control-plane release=linkerd-control-plane version=enterprise-2.16.0
time="2024-08-27T18:43:17Z" level=info msg="Checking control-plane readiness" operator=control-plane
time="2024-08-27T18:48:17Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:48:19Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:48:19Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T18:48:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:48:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T18:48:25Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:48:25Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T18:48:33Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:48:33Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T18:48:49Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:48:49Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T18:49:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:49:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T18:50:25Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:50:25Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T18:52:33Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:52:33Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T18:56:49Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T18:56:49Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T19:05:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T19:05:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T19:15:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T19:15:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T19:25:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T19:25:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T19:35:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T19:35:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T19:45:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T19:45:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T19:55:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T19:55:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T20:05:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T20:05:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T20:15:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T20:15:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"
time="2024-08-27T20:25:21Z" level=info msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]" operator=control-plane
time="2024-08-27T20:25:21Z" level=error msg="control-plane not ready: linkerd control-plane configMap version [enterprise-2.16.0] but linkerd/Deployment/metrics-api has proxy version [enterprise-2.15.5]"