CRD creation fails in pod spec charms on juju 2.9.25

Bug #1962187 reported by Dominik Fleischmann
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Canonical Juju
Fix Released
High
Yang Kelvin Liu

Bug Description

When deploying a pod-spec charm that also creates a CustomResourceDefinition, on Kuberentes 1.21 with juju 2.9.25 the following error occurs:

creating or updating custom resource definitions: ensuring custom resource definition "authcodes.dex.coreos.com" with version "v1beta1": CustomResourceDefinition.apiextensions.k8s.io "authcodes.dex.coreos.com" is invalid: spec.versions[0].schema.openAPIV3Schema: Required value: schemas are required

Steps to reproduce:
sudo snap install microk8s --classic --channel=1.21/stable
microk8s enable dns storage ingress metallb:10.64.140.43-10.64.140.49 # probably also happens with only dns and storage
juju bootstrap microk8s
juju add-model kubeflow
juju deploy dex-auth

This is currently blocking everyone from deploying Kubeflow on the latest version of juju.

description: updated
Changed in juju:
importance: Undecided → High
status: New → Triaged
Revision history for this message
Rob Gibbon (robgibbon) wrote :

https://github.com/juju/juju/commit/695d9bc09df0725a168df52707336bb6a3a92ff7

I think this commit might be what broke it. In caas/kubernetes/provider/customresourcedefinitions.go you add some logic that converts a v1beta1 CRD into a v1 CRD but this I think won't work on K8s 1.21, which Kubeflow requires.

```go
  var err error
  switch v.Spec.Version {
  case k8sspecs.K8sCustomResourceDefinitionV1:
   if k8sVersion.Major == 1 && k8sVersion.Minor < 16 {
    return cleanUps, errors.NotSupportedf("custom resource definition version %q", v.Spec.Version)
   } else {
    out, crdCleanUps, err = k.ensureCustomResourceDefinitionV1(obj, v.Spec.SpecV1)
   }
  case k8sspecs.K8sCustomResourceDefinitionV1Beta1:
   if k8sVersion.Major == 1 && k8sVersion.Minor < 16 {
    out, crdCleanUps, err = k.ensureCustomResourceDefinitionV1beta1(obj, v.Spec.SpecV1Beta1)
   } else {
    var newSpec apiextensionsv1.CustomResourceDefinitionSpec
    newSpec, err = k8sspecs.UpgradeCustomResourceDefinitionSpecV1Beta1(v.Spec.SpecV1Beta1)
    if err != nil {
     err = errors.Annotatef(err, "cannot convert v1beta1 crd to v1")
     break
    }
    out, crdCleanUps, err = k.ensureCustomResourceDefinitionV1(obj, newSpec)
   }
  default:
   // This should never happen.
   return cleanUps, errors.NotSupportedf("custom resource definition version %q", v.Spec.Version)
```

Revision history for this message
Harry Pidcock (hpidcock) wrote :
Changed in juju:
assignee: nobody → Yang Kelvin Liu (kelvin.liu)
status: Triaged → Fix Committed
milestone: none → 2.9.26
Changed in juju:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.