<p>I'm trying to verify a CSV I built out for my Kubernetes operator using Operator Framework's operator-sdk. While doing that, I'm running into the following error.</p>

<p>What does this error from <code>operator-courier verify</code> mean? </p>

<pre><code>ERROR: CRD.spec.version does not match CSV.spec.crd.owned.version
</code></pre>

Josiah
<p>This can occur if you simply have a CRD in your bundle that isn't mentioned in the CSV, but has a <code>spec.version</code> that isn't the same as the CSV.</p>

<p>Otherwise, you have a CSV that is probably something like this:</p>

<pre><code>apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
spec:
  customeresourcedefinitions:
    owned:
    - name: something
    version: v1alpha1  &lt;=================
</code></pre>

<p>and a CRD that is something like this</p>

<pre><code>apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: something
spec:
  version: v1alpha2  &lt;===================
</code></pre>

<p>Those two versions need to align.</p>

<p>You might also see this in your installPlan's <code>status.conditions.message</code> if you get that far:</p>

<pre><code>    CustomResourceDefinition.apiextensions.k8s.io
    "something.mycompany.com" is invalid: spec.version:
    Invalid value: "v1alpha2": must match the first version in spec.versions
</code></pre>
