Uploaded image for project: 'OpenShift Bugs'
  1. OpenShift Bugs
  2. OCPBUGS-65470

authentication ClusterOperator relatedObjects missing ClusterRoleBinding

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • 4.21
    • apiserver-auth
    • None
    • Quality / Stability / Reliability
    • False
    • Hide

      None

      Show
      None
    • None
    • Low
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Description of problem

      While checking oc adm inspect clusteroperator output in CI, I noticed that many components install ClusterRoles and ClusterRoleBindings via release image manifests, but fail to mention them in their ClusterOperator's relatedObjects. The authentication ClusterOperator is one of these, with https://amd64.ocp.releases.ci.openshift.org/ > 4-dev-preview > 4.21.0-ec.2 > aws-ovn-serial-1of2 > Artifacts> inspected ClusterOperators:

      $ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/periodic-ci-openshift-release-master-nightly-4.21-e2e-aws-ovn-serial-1of2/1980906989932253184/artifacts/e2e-aws-ovn-serial/gather-extra/artifacts/inspect/cluster-scoped-resources/config.openshift.io/clusteroperators/authentication.yaml | yaml2json | jq -c '.status.relatedObjects[]'
      {"group":"operator.openshift.io","name":"cluster","resource":"authentications"}
      {"group":"config.openshift.io","name":"cluster","resource":"authentications"}
      {"group":"config.openshift.io","name":"cluster","resource":"infrastructures"}
      {"group":"config.openshift.io","name":"cluster","resource":"oauths"}
      {"group":"route.openshift.io","name":"oauth-openshift","namespace":"openshift-authentication","resource":"routes"}
      {"group":"","name":"oauth-openshift","namespace":"openshift-authentication","resource":"services"}
      {"group":"","name":"openshift-config","resource":"namespaces"}
      {"group":"","name":"openshift-config-managed","resource":"namespaces"}
      {"group":"","name":"openshift-authentication","resource":"namespaces"}
      {"group":"","name":"openshift-authentication-operator","resource":"namespaces"}
      {"group":"","name":"openshift-ingress","resource":"namespaces"}
      {"group":"","name":"openshift-oauth-apiserver","resource":"namespaces"}
      

      despite requesting a system:openshift:operator:authentication ClusterRoleBinding. To facilitate the gathering of resources relevant to the component, the ClusterOperator's relatedObjects should be expanded to reference that ClusterRoleBinding, and any other resources that might be relevant to debugging the component, as described in the ClusterOperator docs. Note that some inspect lookup is implicit as part of a namespace reference, but that will obviously not pick up resources that are cluster scoped, like ClusterRoleBinding.

      Version-Release number of selected component

      Seen in 4.21.0-ec.2 CI. Likely applies to many other versions, but I have not audited.

      How reproducible

      Every time.

      Steps to Reproduce

      1. Install a cluster.
      2. Inspect the ClusterOperator: oc adm inspect clusteroperator/authentication.
      3. Ensure all the resources relevant to debugging that component are present in the output.

      Actual results

      $ ls inspect.local.*/cluster-scoped-resources/
      config.openshift.io  operator.openshift.io
      

      Expected results

      cluster-scoped-resources/rbac.authorization.k8s.io/clusterrolebindings should be collected with the system:openshift:operator:authentication binding, along with any other cluster-scoped resources which would be useful for debugging the component.

      Additional info

      In addition to expanding relatedObjects in your reconciled ClusterOperator status (likely Go code in your controller), you may want to extend the entries in your ClusterOperator release image manifest. Definitely expand the manifest if you think you might need the resource collected to debug "why is my Go controller failing to update ClusterOperator status.relatedObjects?", so the CVO can put that entry in place if your operator fails to install.

      You may also want to grow a component-specific ClusterRole, instead of using cluster-admin.

              Unassigned Unassigned
              trking W. Trevor King
              None
              None
              Zhaohua Sun Zhaohua Sun
              None
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: