Custom controller provisioning YAML settings are disregarded after upgrade to 2.375.3.3 or later

2 minute readKnowledge base

Issue

  • Self-signed certificates injected to controllers using ConfigMap items are disregarded after upgrade to 2.375.3.3 or later.

  • Self-signed certificates injected to OpenShift controllers using sidecar-injector and a Route are disregarded after upgrade to 2.375.3.3 or later.

  • Customizations to the default managed controller provisioning YAML (additional containers, specs, …​) are disregarded after upgrade to 2.375.3.3 or later.

  • Service and Ingress items defined at managed controller provisioning YAML are disregarded after upgrade to 2.375.3.3 or later.

Environment

Issue

Customizations given at Managed Controller provisioning through the left YAML snippet under Advanced configuration are not merged into the effective provisioning YAML displayed on the right-hand side of the page.

The controller provisioning feature can submit several items to Kubernetes: a StatefulSet, a Service, an Ingress, and/or a Route (when using RedHat OpenShift). Starting in 2.375.3.3, when the apiVersion is not explicitly given to the custom resources given through the snippet, the items definitions are disregarded and, therefore, not reflected onto the effective provisioning YAML.

Context

As indicated in our release notes, in 2.375.3.3, The Java library used to access Kubernetes, Fabric8 Kubernetes Client, has been upgraded from 5.x to 6.x.

This update has no impact for customers who do not use the YAML field under Advanced configuration on the controller configuration screen in the Operations center. For customers using the YAML field under Advanced configuration, this update means that indicating the apiVersion on a Kubernetes resource being deserialized is now required.

To know if a CloudBees CI cluster is impacted by this change, the following script can be run in the Operations Center to detect invalid configurations.

Resolution

Provide the corresponding apiVersion for each of the items customized through the YAML field under managed controller provisioning Advanced configuration.

The following example adds a custom label on each element that is managed by the controller provisioning functionality:

--- kind: StatefulSet apiVersion: apps/v1 metadata: labels: my-label: my-value --- kind: Service apiVersion: v1 metadata: labels: my-label: my-value --- kind: Ingress apiVersion: networking.k8s.io/v1 metadata: labels: my-label: my-value --- # Alternatively, for OpenShift routes kind: Route apiVersion: route.openshift.io/v1 metadata: labels: my-label: my-value