Uploaded image for project: 'OpenShift BuildConfig'
  1. OpenShift BuildConfig
  2. OCPBUILD-108

Feature Gate Build CSI Volume Mounts

XMLWordPrintable

    • Icon: Story Story
    • Resolution: Done
    • Icon: Undefined Undefined
    • None
    • None
    • None
    • 3

      User Story

      As an OpenShift cluster admin
      I want to use the TechPreview feature set to try out CSI volumes in builds
      So that I can test using CSI volumes in builds through tech preview features

      Minimum Acceptance Criteria

      • Openshift-controller-manager-operator reads the cluster feature gate (BuildCSIVolumes).
      • If the feature gate for Build CSI volumes is enabled, the operator enables configuration in openshift-controller-manager to turn on CSI volumes for the build controller.
      • CI testing verifies that we pass the appropriate feature gate to the build controller when tech preview is enabled.

      Docs Impact

      Product documentation will not be required until BUILD-275 is complete. Documentation for CSI volumes in builds will need to note that the TechPreviewNoUpgrade feature set needs to be enabled on the cluster.

      PX Impact

      Additional training enablement materials may not be needed - product docs should be sufficient.

      QE Imact

      Full e2e testing may not be feasible until BUILD-275 is completed.
      CI testing should verify that the appropriate configuration values were passed to the build controller.

      We will likely need a new CI job that installs the cluster with tech preview enabled before we verify that the BuildCSIVolumes feature gate has been enabled.

      Open Questions

      • Should ocm-o mark itself Upgradeable=false if we detect the BuildCSIVolumes feature gate has been enabled?

      Notes

      OpenShift already has feature gates baked into the core platform via the FeatureGate API object. For this feature, we need to declare a feature gate that is added to the TechPreviewNoUpgrade feature set, which openshift-controller-manager-operator then reads and applies to the build controller.

      Feature gate needs to be proposed to openshift/api (add to the TechPreviewNoUpgrade feature set).
      An example PR on how to do this: https://github.com/openshift/api/pull/982.
      Once approved, the updated tech preview feature set needs to be vendored into openshift/library-go.
      Openshift-controller-manager-operator needs to read the feature gate, pass it on to the build controller.
      The build controller has its own configuration "API" - this was a relic of the 3.x master configuration that is not exposed to admins in OCP 4.x: https://github.com/openshift/api/blob/master/openshiftcontrolplane/v1/types.go#L198-L207

      A separate operator looks checks if a *NoUpgrade feature set is enabled, and if so marks the cluster as unable to be upgraded to the next minor OCP
      release.

      To test this in CI, we need a suite that runs with the TechPreviewNoUpgrade feature set enabled. The step registry has primitives which bring up a cluster with tech preview features enabled. We will need to update ocm-o's CI configuration to run our operator tests with tech preview enabled. Testing for this specific feature will need to have separate logic that verifies we are sending the right configuration to the build controller under normal and TechPreview mode.

       

      Existing techpreview CI step registry setups (note the per cloud elements, which make sense, since the existing CSI drivers are per cloud):

      /ci-operator/step-registry/ipi/aws/pre/techpreview
      ./ci-operator/step-registry/ipi/azure/pre/techpreview
      ./ci-operator/step-registry/ipi/conf/aws/techpreview
      ./ci-operator/step-registry/ipi/conf/azure/techpreview
      ./ci-operator/step-registry/ipi/conf/techpreview
      ./ci-operator/step-registry/ipi/conf/openstack/techpreview
      ./ci-operator/step-registry/ipi/openstack/pre/techpreview
      ./ci-operator/step-registry/openshift/e2e/aws/techpreview
      ./ci-operator/step-registry/openshift/e2e/gcp/techpreview
      ./ci-operator/step-registry/openshift/e2e/azure/techpreview
      ./ci-operator/step-registry/openshift/e2e/openstack/techpreview
      ./ci-operator/step-registry/openshift/e2e/vsphere/techpreview

       

      Given shared resources span all clouds, etc. does that mean we touch each of these, or create a new one, or both?

              gmontero@redhat.com Gabe Montero
              adkaplan@redhat.com Adam Kaplan
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: