What versions of Helm Chart "linkerd-crds" are compatable with "linkerd-control-plane"?

Is there a table in any Linkerd documentation anywhere that describes which version of Helm Chart linkerd-crds should be used with linkerd-control-plane?

Currently my cluster’s setup looks something like:-

+-----------------------+-----------------+-----------------------+-------------+
| Linkerd Component     | Current Version | Helm Chart            | Helm Chart  |
| Name                  |                 | Name                  | Version     |
+-----------------------+-----------------+-----------------------+-------------+
| linkerd-destination   |                 |                       |             |
| linkerd-identity      | stable-2.13.5   | linkerd-control-plane | 1.12.5      |
| linkerd-proxy-injector|                 |                       |             |
+-----------------------+-----------------+-----------------------+-------------+
| various linkerd CRDs  |        ?        | linkerd-crds          | 1.6.1       |
+-----------------------+-----------------+-----------------------+-------------+

I deploy linkerd-crds & linkerd-control-plane as two separate Helm charts in their own deployment pipelines (because CRDs must be installed before the rest of Linkerd). I would like to automatically deploy the latest minor release (e.g. stable-2.13.*) which I’d do with my own “Parent” Helm chart, e.g

Chart.yaml:-

dependencies:
  - name: linkerd-control-plane
    version: ~1.12
    repository: https://helm.linkerd.io/stable
    condition: linkerd-control-plane.enabled
    alias: linkerdControlPlane

where version: ~1.12 should fetch the latest Helm Chart 1.12.5, which contains the appVersion stable-2.13.5. The recent linkerd-control-plane Helm Chart versions appear to marry-up with Linkerd app versions like:-

+------------+--------+
|Helm Chart  | App    |
+------------+--------+
| 1.12.*     | 2.13.* |
| 1.9.*      | 2.12.* |
+------------+--------+

but I’m not sure about the linkerd-crds Chart versions, and how they relate to the main application Chart. For example, does:-

+--------------+--------+
|linkerd-crds  | linkerd-control-plane |
+--------------+--------+
| 1.6.1        | 1.12.5 |
| 1.6.0        | 1.12.4 |
|              | 1.12.3 |
|              | 1.12.2 |
|              | 1.12.1 |
+--------------+--------+
| 1.4.0        | 1.9.7  |
+--------------+--------|

relate to one-another?

It was suggested I raise this as a thread here, from my discussion in Slack here

tl;dr - how do I know/handle the major version changes in linkerd-crds such that I don’t break them with a wrong linkerd-control-plane?

Thanks

Hi @bthomas

The linkerd-control-plane chart has an appVersion field which indicates which Linkerd release it was associated with: linkerd-control-plane 1.12.5 · buoyant/linkerd2

For example, Helm chart version 1.12.5 was associated with Linkerd release stable-2.13.5.

Unfortunately, the linkerd-crds chart does not have this appVersion field, which makes things a bit trickier. Instead, for any given Linkerd release, we can look at the chart definition in that release to see the Helm chart version of the linkerd-crds chart.

For example: https://github.com/linkerd/linkerd2/blob/stable-2.13.5/charts/linkerd-crds/Chart.yaml
The linkred-crds Helm chart version for Linkerd stable-2.13.5 was 1.6.1

I recognize that this is a very roundabout way of collecting this information about which Helm charts were released together. There isn’t anywhere in the docs that centralizes this information, but I think adding something like that would be a good idea.