From 9873ca7c90b3892b0750a572deb1b5c2e5db2ea7 Mon Sep 17 00:00:00 2001 From: Corey Daley Date: Sun, 2 Feb 2025 19:35:56 -0500 Subject: [PATCH 1/2] chore: set readOnlyRootFilesystem on Operator Container --- ...kstage-operator.clusterserviceversion.yaml | 542 +++++++++--------- config/manager/deployment.yaml | 113 ++-- 2 files changed, 330 insertions(+), 325 deletions(-) diff --git a/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml b/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml index 17f40e8d6..7991709fa 100644 --- a/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml +++ b/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml @@ -40,7 +40,8 @@ metadata: certified: "true" containerImage: registry.redhat.io/rhdh/rhdh-rhel9-operator:1.5 createdAt: "2025-01-20T11:25:12Z" - description: Red Hat Developer Hub is a Red Hat supported version of Backstage. + description: + Red Hat Developer Hub is a Red Hat supported version of Backstage. It comes with pre-built plug-ins and configuration settings, supports use of an external database, and can help streamline the process of setting up a self-managed internal developer portal for adopters who are just starting out. @@ -59,7 +60,7 @@ metadata: operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://gitlab.cee.redhat.com/rhidp/rhdh/ - skipRange: '>=1.0.0 <1.5.0' + skipRange: ">=1.0.0 <1.5.0" support: Red Hat labels: operatorframework.io/arch.amd64: supported @@ -69,31 +70,33 @@ spec: apiservicedefinitions: {} customresourcedefinitions: owned: - - description: Backstage is the Schema for the Red Hat Developer Hub backstages - API. It comes with pre-built plug-ins, configuration settings, and deployment - mechanisms, which can help streamline the process of setting up a self-managed - internal developer portal for adopters who are just starting out. - displayName: Red Hat Developer Hub - kind: Backstage - name: backstages.rhdh.redhat.com - version: v1alpha1 - - description: Backstage is the Schema for the Red Hat Developer Hub backstages - API. It comes with pre-built plug-ins, configuration settings, and deployment - mechanisms, which can help streamline the process of setting up a self-managed - internal developer portal for adopters who are just starting out. - displayName: Red Hat Developer Hub - kind: Backstage - name: backstages.rhdh.redhat.com - version: v1alpha2 - - description: |- - Backstage is the Schema for the Red Hat Developer Hub backstages API. - It comes with pre-built plug-ins, configuration settings, and deployment mechanisms, - which can help streamline the process of setting up a self-managed internal - developer portal for adopters who are just starting out. - displayName: Red Hat Developer Hub - kind: Backstage - name: backstages.rhdh.redhat.com - version: v1alpha3 + - description: + Backstage is the Schema for the Red Hat Developer Hub backstages + API. It comes with pre-built plug-ins, configuration settings, and deployment + mechanisms, which can help streamline the process of setting up a self-managed + internal developer portal for adopters who are just starting out. + displayName: Red Hat Developer Hub + kind: Backstage + name: backstages.rhdh.redhat.com + version: v1alpha1 + - description: + Backstage is the Schema for the Red Hat Developer Hub backstages + API. It comes with pre-built plug-ins, configuration settings, and deployment + mechanisms, which can help streamline the process of setting up a self-managed + internal developer portal for adopters who are just starting out. + displayName: Red Hat Developer Hub + kind: Backstage + name: backstages.rhdh.redhat.com + version: v1alpha2 + - description: |- + Backstage is the Schema for the Red Hat Developer Hub backstages API. + It comes with pre-built plug-ins, configuration settings, and deployment mechanisms, + which can help streamline the process of setting up a self-managed internal + developer portal for adopters who are just starting out. + displayName: Red Hat Developer Hub + kind: Backstage + name: backstages.rhdh.redhat.com + version: v1alpha3 description: | Red Hat Developer Hub is an enterprise-grade platform for building developer portals, containing a supported and opinionated framework. It comes with pre-built plug-ins and configuration settings, supports use of an external database, and can help streamline the process of setting up a self-managed internal developer portal for adopters who are just starting out. By implementing a unified and open platform designed to maximize developer skills, ease onboarding, and increase development productivity, focus can be centered on what really matters: writing great code. Red Hat Developer Hub also offers Software Templates to simplify the development process, which can reduce friction and frustration for development teams, boosting their productivity and increasing an organization's competitive advantage. @@ -112,265 +115,266 @@ spec: * [Configuring external PostgreSQL databases](https://docs.redhat.com/en/documentation/red_hat_developer_hub/1.3/html/administration_guide_for_red_hat_developer_hub/assembly-configuring-external-postgresql-databases#assembly-configuring-external-postgresql-databases) displayName: Red Hat Developer Hub Operator icon: - - base64data: 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 - mediatype: image/png + - base64data: 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 + mediatype: image/png install: spec: clusterPermissions: - - rules: - - apiGroups: - - "" - resources: - - configmaps - - persistentvolumeclaims - - secrets - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - "" - resources: - - persistentvolumes - verbs: - - get - - list - - watch - - apiGroups: - - apps - resources: - - deployments - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - rhdh.redhat.com - resources: - - backstages - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - rhdh.redhat.com - resources: - - backstages/finalizers - verbs: - - update - - apiGroups: - - rhdh.redhat.com - resources: - - backstages/status - verbs: - - get - - patch - - update - - apiGroups: - - route.openshift.io - resources: - - routes - - routes/custom-host - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create - - apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create - serviceAccountName: rhdh-controller-manager + - rules: + - apiGroups: + - "" + resources: + - configmaps + - persistentvolumeclaims + - secrets + - services + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - apiGroups: + - apps + resources: + - deployments + - statefulsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rhdh.redhat.com + resources: + - backstages + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rhdh.redhat.com + resources: + - backstages/finalizers + verbs: + - update + - apiGroups: + - rhdh.redhat.com + resources: + - backstages/status + verbs: + - get + - patch + - update + - apiGroups: + - route.openshift.io + resources: + - routes + - routes/custom-host + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: rhdh-controller-manager deployments: - - label: - app: rhdh-operator - control-plane: controller-manager - name: rhdh-operator - spec: - replicas: 1 - selector: - matchLabels: - app: rhdh-operator - strategy: - type: RollingUpdate - template: - metadata: - annotations: - kubectl.kubernetes.io/default-container: manager - labels: + - label: + app: rhdh-operator + control-plane: controller-manager + name: rhdh-operator + spec: + replicas: 1 + selector: + matchLabels: app: rhdh-operator - app.kubernetes.io/component: rhdh-operator - control-plane: controller-manager - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/arch - operator: In - values: - - amd64 - - key: kubernetes.io/os - operator: In - values: - - linux - automountServiceAccountToken: true - containers: - - args: - - --health-probe-bind-address=:8081 - - --metrics-bind-address=:8443 - - --metrics-secure=true - - --leader-elect - command: - - /manager - env: - - name: OPERATOR_NAME - value: rhdh-operator - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: RELATED_IMAGE_postgresql - value: quay.io/fedora/postgresql-15:latest - - name: RELATED_IMAGE_backstage - value: quay.io/rhdh/rhdh-hub-rhel9:next - image: quay.io/rhdh/rhdh-rhel9-operator:1.5 - livenessProbe: - httpGet: - path: /healthz - port: health - initialDelaySeconds: 15 - periodSeconds: 20 - name: manager - ports: - - containerPort: 8081 - name: health - - containerPort: 8443 - name: metrics - readinessProbe: - httpGet: - path: /readyz - port: health - initialDelaySeconds: 5 - periodSeconds: 10 - resources: - limits: - cpu: 500m - ephemeral-storage: 20Mi - memory: 1Gi - requests: - cpu: 10m - memory: 128Mi + strategy: + type: RollingUpdate + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + app: rhdh-operator + app.kubernetes.io/component: rhdh-operator + control-plane: controller-manager + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/arch + operator: In + values: + - amd64 + - key: kubernetes.io/os + operator: In + values: + - linux + automountServiceAccountToken: true + containers: + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=:8443 + - --metrics-secure=true + - --leader-elect + command: + - /manager + env: + - name: OPERATOR_NAME + value: rhdh-operator + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: RELATED_IMAGE_postgresql + value: quay.io/fedora/postgresql-15:latest + - name: RELATED_IMAGE_backstage + value: quay.io/rhdh/rhdh-hub-rhel9:next + image: quay.io/rhdh/rhdh-rhel9-operator:1.5 + livenessProbe: + httpGet: + path: /healthz + port: health + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + ports: + - containerPort: 8081 + name: health + - containerPort: 8443 + name: metrics + readinessProbe: + httpGet: + path: /readyz + port: health + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + ephemeral-storage: 20Mi + memory: 1Gi + requests: + cpu: 10m + memory: 128Mi + securityContext: + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + volumeMounts: + - mountPath: /default-config + name: default-config securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - volumeMounts: - - mountPath: /default-config - name: default-config - securityContext: - runAsNonRoot: true - serviceAccountName: rhdh-controller-manager - terminationGracePeriodSeconds: 10 - volumes: - - configMap: - name: rhdh-default-config - name: default-config + runAsNonRoot: true + serviceAccountName: rhdh-controller-manager + terminationGracePeriodSeconds: 10 + volumes: + - configMap: + name: rhdh-default-config + name: default-config permissions: - - rules: - - apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - serviceAccountName: rhdh-controller-manager + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: rhdh-controller-manager strategy: deployment installModes: - - supported: false - type: OwnNamespace - - supported: false - type: SingleNamespace - - supported: false - type: MultiNamespace - - supported: true - type: AllNamespaces + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces keywords: - - Backstage - - RHDH + - Backstage + - RHDH links: - - name: Product Page - url: https://developers.redhat.com/products/developer-hub/overview/ - - name: Documentation - url: https://access.redhat.com/documentation/en-us/red_hat_developer_hub - - name: Backstage Operator (Upstream) - url: https://github.com/redhat-developer/rhdh-operator - - name: RHDH Operator (Downstream) - url: https://gitlab.cee.redhat.com/rhidp/rhdh/ + - name: Product Page + url: https://developers.redhat.com/products/developer-hub/overview/ + - name: Documentation + url: https://access.redhat.com/documentation/en-us/red_hat_developer_hub + - name: Backstage Operator (Upstream) + url: https://github.com/redhat-developer/rhdh-operator + - name: RHDH Operator (Downstream) + url: https://gitlab.cee.redhat.com/rhidp/rhdh/ maintainers: - - email: rhdh-notifications@redhat.com - name: Red Hat Developer Hub Team + - email: rhdh-notifications@redhat.com + name: Red Hat Developer Hub Team maturity: alpha minKubeVersion: 1.25.0 provider: name: Red Hat Inc. url: https://www.redhat.com/ relatedImages: - - image: quay.io/fedora/postgresql-15:latest - name: postgresql - - image: quay.io/rhdh/rhdh-hub-rhel9:next - name: backstage + - image: quay.io/fedora/postgresql-15:latest + name: postgresql + - image: quay.io/rhdh/rhdh-hub-rhel9:next + name: backstage replaces: rhdh-operator.v1.4.0 version: 1.5.0 diff --git a/config/manager/deployment.yaml b/config/manager/deployment.yaml index 44269f956..03d47efb7 100644 --- a/config/manager/deployment.yaml +++ b/config/manager/deployment.yaml @@ -31,17 +31,17 @@ spec: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - - key: kubernetes.io/arch - operator: In - values: - - amd64 -# - arm64 -# - ppc64le -# - s390x - - key: kubernetes.io/os - operator: In - values: - - linux + - key: kubernetes.io/arch + operator: In + values: + - amd64 + # - arm64 + # - ppc64le + # - s390x + - key: kubernetes.io/os + operator: In + values: + - linux securityContext: runAsNonRoot: true # (user): For common cases that do not require escalating privileges @@ -52,51 +52,52 @@ spec: # seccompProfile: # type: RuntimeDefault containers: - - command: - - /manager - args: - - --health-probe-bind-address=:8081 - - --metrics-bind-address=:8443 - - --metrics-secure=true - - --leader-elect - image: controller:latest - name: manager - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - "ALL" - ports: - - name: health - containerPort: 8081 - - name: metrics - containerPort: 8443 - livenessProbe: - httpGet: - path: /healthz - port: health - initialDelaySeconds: 15 - periodSeconds: 20 - readinessProbe: - httpGet: - path: /readyz - port: health - initialDelaySeconds: 5 - periodSeconds: 10 - resources: - limits: - cpu: 500m - memory: 1Gi - ephemeral-storage: 20Mi - requests: - cpu: 10m - memory: 128Mi - volumeMounts: - - mountPath: /default-config - name: default-config + - command: + - /manager + args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=:8443 + - --metrics-secure=true + - --leader-elect + image: controller:latest + name: manager + securityContext: + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + capabilities: + drop: + - "ALL" + ports: + - name: health + containerPort: 8081 + - name: metrics + containerPort: 8443 + livenessProbe: + httpGet: + path: /healthz + port: health + initialDelaySeconds: 15 + periodSeconds: 20 + readinessProbe: + httpGet: + path: /readyz + port: health + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 1Gi + ephemeral-storage: 20Mi + requests: + cpu: 10m + memory: 128Mi + volumeMounts: + - mountPath: /default-config + name: default-config serviceAccountName: controller-manager terminationGracePeriodSeconds: 10 volumes: - - name: default-config - configMap: - name: default-config + - name: default-config + configMap: + name: default-config From cfeb7123a7be53ecc11a0c6e385f26c3bcc4dc66 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 3 Feb 2025 00:37:46 +0000 Subject: [PATCH 2/2] Regenerate bundle manifests Co-authored-by: coreydaley --- ...kstage-operator.clusterserviceversion.yaml | 3 +- ...kstage-operator.clusterserviceversion.yaml | 545 +++++++++--------- 2 files changed, 273 insertions(+), 275 deletions(-) diff --git a/bundle/backstage.io/manifests/backstage-operator.clusterserviceversion.yaml b/bundle/backstage.io/manifests/backstage-operator.clusterserviceversion.yaml index e76c383de..41e7b4e43 100644 --- a/bundle/backstage.io/manifests/backstage-operator.clusterserviceversion.yaml +++ b/bundle/backstage.io/manifests/backstage-operator.clusterserviceversion.yaml @@ -35,7 +35,7 @@ metadata: } } ] - createdAt: "2025-01-20T11:12:13Z" + createdAt: "2025-02-03T00:37:44Z" description: Backstage Operator operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 @@ -240,6 +240,7 @@ spec: capabilities: drop: - ALL + readOnlyRootFilesystem: true volumeMounts: - mountPath: /default-config name: default-config diff --git a/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml b/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml index 7991709fa..af64cf917 100644 --- a/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml +++ b/bundle/rhdh/manifests/backstage-operator.clusterserviceversion.yaml @@ -39,9 +39,8 @@ metadata: categories: Developer Tools certified: "true" containerImage: registry.redhat.io/rhdh/rhdh-rhel9-operator:1.5 - createdAt: "2025-01-20T11:25:12Z" - description: - Red Hat Developer Hub is a Red Hat supported version of Backstage. + createdAt: "2025-02-03T00:37:46Z" + description: Red Hat Developer Hub is a Red Hat supported version of Backstage. It comes with pre-built plug-ins and configuration settings, supports use of an external database, and can help streamline the process of setting up a self-managed internal developer portal for adopters who are just starting out. @@ -60,7 +59,7 @@ metadata: operators.operatorframework.io/builder: operator-sdk-v1.37.0 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://gitlab.cee.redhat.com/rhidp/rhdh/ - skipRange: ">=1.0.0 <1.5.0" + skipRange: '>=1.0.0 <1.5.0' support: Red Hat labels: operatorframework.io/arch.amd64: supported @@ -70,33 +69,31 @@ spec: apiservicedefinitions: {} customresourcedefinitions: owned: - - description: - Backstage is the Schema for the Red Hat Developer Hub backstages - API. It comes with pre-built plug-ins, configuration settings, and deployment - mechanisms, which can help streamline the process of setting up a self-managed - internal developer portal for adopters who are just starting out. - displayName: Red Hat Developer Hub - kind: Backstage - name: backstages.rhdh.redhat.com - version: v1alpha1 - - description: - Backstage is the Schema for the Red Hat Developer Hub backstages - API. It comes with pre-built plug-ins, configuration settings, and deployment - mechanisms, which can help streamline the process of setting up a self-managed - internal developer portal for adopters who are just starting out. - displayName: Red Hat Developer Hub - kind: Backstage - name: backstages.rhdh.redhat.com - version: v1alpha2 - - description: |- - Backstage is the Schema for the Red Hat Developer Hub backstages API. - It comes with pre-built plug-ins, configuration settings, and deployment mechanisms, - which can help streamline the process of setting up a self-managed internal - developer portal for adopters who are just starting out. - displayName: Red Hat Developer Hub - kind: Backstage - name: backstages.rhdh.redhat.com - version: v1alpha3 + - description: Backstage is the Schema for the Red Hat Developer Hub backstages + API. It comes with pre-built plug-ins, configuration settings, and deployment + mechanisms, which can help streamline the process of setting up a self-managed + internal developer portal for adopters who are just starting out. + displayName: Red Hat Developer Hub + kind: Backstage + name: backstages.rhdh.redhat.com + version: v1alpha1 + - description: Backstage is the Schema for the Red Hat Developer Hub backstages + API. It comes with pre-built plug-ins, configuration settings, and deployment + mechanisms, which can help streamline the process of setting up a self-managed + internal developer portal for adopters who are just starting out. + displayName: Red Hat Developer Hub + kind: Backstage + name: backstages.rhdh.redhat.com + version: v1alpha2 + - description: |- + Backstage is the Schema for the Red Hat Developer Hub backstages API. + It comes with pre-built plug-ins, configuration settings, and deployment mechanisms, + which can help streamline the process of setting up a self-managed internal + developer portal for adopters who are just starting out. + displayName: Red Hat Developer Hub + kind: Backstage + name: backstages.rhdh.redhat.com + version: v1alpha3 description: | Red Hat Developer Hub is an enterprise-grade platform for building developer portals, containing a supported and opinionated framework. It comes with pre-built plug-ins and configuration settings, supports use of an external database, and can help streamline the process of setting up a self-managed internal developer portal for adopters who are just starting out. By implementing a unified and open platform designed to maximize developer skills, ease onboarding, and increase development productivity, focus can be centered on what really matters: writing great code. Red Hat Developer Hub also offers Software Templates to simplify the development process, which can reduce friction and frustration for development teams, boosting their productivity and increasing an organization's competitive advantage. @@ -115,266 +112,266 @@ spec: * [Configuring external PostgreSQL databases](https://docs.redhat.com/en/documentation/red_hat_developer_hub/1.3/html/administration_guide_for_red_hat_developer_hub/assembly-configuring-external-postgresql-databases#assembly-configuring-external-postgresql-databases) displayName: Red Hat Developer Hub Operator icon: - - base64data: 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 - mediatype: image/png + - base64data: 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 + mediatype: image/png install: spec: clusterPermissions: - - rules: - - apiGroups: - - "" - resources: - - configmaps - - persistentvolumeclaims - - secrets - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - "" - resources: - - persistentvolumes - verbs: - - get - - list - - watch - - apiGroups: - - apps - resources: - - deployments - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - rhdh.redhat.com - resources: - - backstages - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - rhdh.redhat.com - resources: - - backstages/finalizers - verbs: - - update - - apiGroups: - - rhdh.redhat.com - resources: - - backstages/status - verbs: - - get - - patch - - update - - apiGroups: - - route.openshift.io - resources: - - routes - - routes/custom-host - verbs: - - create - - delete - - get - - list - - patch - - update - - watch - - apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create - - apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create - serviceAccountName: rhdh-controller-manager + - rules: + - apiGroups: + - "" + resources: + - configmaps + - persistentvolumeclaims + - secrets + - services + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - apiGroups: + - apps + resources: + - deployments + - statefulsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rhdh.redhat.com + resources: + - backstages + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rhdh.redhat.com + resources: + - backstages/finalizers + verbs: + - update + - apiGroups: + - rhdh.redhat.com + resources: + - backstages/status + verbs: + - get + - patch + - update + - apiGroups: + - route.openshift.io + resources: + - routes + - routes/custom-host + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: rhdh-controller-manager deployments: - - label: - app: rhdh-operator - control-plane: controller-manager - name: rhdh-operator - spec: - replicas: 1 - selector: - matchLabels: + - label: + app: rhdh-operator + control-plane: controller-manager + name: rhdh-operator + spec: + replicas: 1 + selector: + matchLabels: + app: rhdh-operator + strategy: + type: RollingUpdate + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: app: rhdh-operator - strategy: - type: RollingUpdate - template: - metadata: - annotations: - kubectl.kubernetes.io/default-container: manager - labels: - app: rhdh-operator - app.kubernetes.io/component: rhdh-operator - control-plane: controller-manager - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/arch - operator: In - values: - - amd64 - - key: kubernetes.io/os - operator: In - values: - - linux - automountServiceAccountToken: true - containers: - - args: - - --health-probe-bind-address=:8081 - - --metrics-bind-address=:8443 - - --metrics-secure=true - - --leader-elect - command: - - /manager - env: - - name: OPERATOR_NAME - value: rhdh-operator - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: RELATED_IMAGE_postgresql - value: quay.io/fedora/postgresql-15:latest - - name: RELATED_IMAGE_backstage - value: quay.io/rhdh/rhdh-hub-rhel9:next - image: quay.io/rhdh/rhdh-rhel9-operator:1.5 - livenessProbe: - httpGet: - path: /healthz - port: health - initialDelaySeconds: 15 - periodSeconds: 20 - name: manager - ports: - - containerPort: 8081 - name: health - - containerPort: 8443 - name: metrics - readinessProbe: - httpGet: - path: /readyz - port: health - initialDelaySeconds: 5 - periodSeconds: 10 - resources: - limits: - cpu: 500m - ephemeral-storage: 20Mi - memory: 1Gi - requests: - cpu: 10m - memory: 128Mi - securityContext: - readOnlyRootFilesystem: true - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - volumeMounts: - - mountPath: /default-config - name: default-config + app.kubernetes.io/component: rhdh-operator + control-plane: controller-manager + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/arch + operator: In + values: + - amd64 + - key: kubernetes.io/os + operator: In + values: + - linux + automountServiceAccountToken: true + containers: + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=:8443 + - --metrics-secure=true + - --leader-elect + command: + - /manager + env: + - name: OPERATOR_NAME + value: rhdh-operator + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: RELATED_IMAGE_postgresql + value: quay.io/fedora/postgresql-15:latest + - name: RELATED_IMAGE_backstage + value: quay.io/rhdh/rhdh-hub-rhel9:next + image: quay.io/rhdh/rhdh-rhel9-operator:1.5 + livenessProbe: + httpGet: + path: /healthz + port: health + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + ports: + - containerPort: 8081 + name: health + - containerPort: 8443 + name: metrics + readinessProbe: + httpGet: + path: /readyz + port: health + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + ephemeral-storage: 20Mi + memory: 1Gi + requests: + cpu: 10m + memory: 128Mi securityContext: - runAsNonRoot: true - serviceAccountName: rhdh-controller-manager - terminationGracePeriodSeconds: 10 - volumes: - - configMap: - name: rhdh-default-config - name: default-config + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + volumeMounts: + - mountPath: /default-config + name: default-config + securityContext: + runAsNonRoot: true + serviceAccountName: rhdh-controller-manager + terminationGracePeriodSeconds: 10 + volumes: + - configMap: + name: rhdh-default-config + name: default-config permissions: - - rules: - - apiGroups: - - "" - resources: - - configmaps - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - get - - list - - watch - - create - - update - - patch - - delete - - apiGroups: - - "" - resources: - - events - verbs: - - create - - patch - serviceAccountName: rhdh-controller-manager + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: rhdh-controller-manager strategy: deployment installModes: - - supported: false - type: OwnNamespace - - supported: false - type: SingleNamespace - - supported: false - type: MultiNamespace - - supported: true - type: AllNamespaces + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces keywords: - - Backstage - - RHDH + - Backstage + - RHDH links: - - name: Product Page - url: https://developers.redhat.com/products/developer-hub/overview/ - - name: Documentation - url: https://access.redhat.com/documentation/en-us/red_hat_developer_hub - - name: Backstage Operator (Upstream) - url: https://github.com/redhat-developer/rhdh-operator - - name: RHDH Operator (Downstream) - url: https://gitlab.cee.redhat.com/rhidp/rhdh/ + - name: Product Page + url: https://developers.redhat.com/products/developer-hub/overview/ + - name: Documentation + url: https://access.redhat.com/documentation/en-us/red_hat_developer_hub + - name: Backstage Operator (Upstream) + url: https://github.com/redhat-developer/rhdh-operator + - name: RHDH Operator (Downstream) + url: https://gitlab.cee.redhat.com/rhidp/rhdh/ maintainers: - - email: rhdh-notifications@redhat.com - name: Red Hat Developer Hub Team + - email: rhdh-notifications@redhat.com + name: Red Hat Developer Hub Team maturity: alpha minKubeVersion: 1.25.0 provider: name: Red Hat Inc. url: https://www.redhat.com/ relatedImages: - - image: quay.io/fedora/postgresql-15:latest - name: postgresql - - image: quay.io/rhdh/rhdh-hub-rhel9:next - name: backstage + - image: quay.io/fedora/postgresql-15:latest + name: postgresql + - image: quay.io/rhdh/rhdh-hub-rhel9:next + name: backstage replaces: rhdh-operator.v1.4.0 version: 1.5.0