From b2677b2956c4ce8911d9b39d706e02cdc157c480 Mon Sep 17 00:00:00 2001 From: Todd Short Date: Thu, 3 Jul 2025 16:50:20 -0400 Subject: [PATCH] Remove use of namespace in kustomize The use of the namespace parameter is kustomization files is very tricky. In one particular instance, we have an ordering issue with the cert-manager CA component. If not ordered correctly in the set of kustomization files, the CA component namespace will be overwritten by prior namespace directives. This eliminates that edge case, and makes the kustomization more robust. Downstream uses a different overlay, so there's no issue there. Also, add `-n` option to the install script to allow users to easily change the namespace that they install OLMv1 into. Note that the manifests don't change; so this keep everything as-is. Signed-off-by: Todd Short --- config/base/catalogd/kustomization.yaml | 1 - config/base/catalogd/manager/manager.yaml | 2 +- .../base/catalogd/manager/network_policy.yaml | 2 +- config/base/catalogd/manager/service.yaml | 2 +- .../rbac/auth_proxy_role_binding.yaml | 2 +- .../catalogd/rbac/leader_election_role.yaml | 1 + .../rbac/leader_election_role_binding.yaml | 3 +- config/base/catalogd/rbac/role.yaml | 2 +- config/base/catalogd/rbac/role_binding.yaml | 6 +-- .../base/catalogd/rbac/service_account.yaml | 2 +- config/base/common/namespace.yaml | 2 +- config/base/common/network_policy.yaml | 2 +- .../operator-controller/kustomization.yaml | 1 - .../operator-controller/manager/manager.yaml | 2 +- .../manager/network_policy.yaml | 2 +- .../operator-controller/manager/service.yaml | 2 +- .../rbac/auth_proxy_role_binding.yaml | 2 +- .../rbac/leader_election_role.yaml | 1 + .../rbac/leader_election_role_binding.yaml | 3 +- .../base/operator-controller/rbac/role.yaml | 2 +- .../rbac/role_binding.yaml | 6 +-- .../rbac/service_account.yaml | 2 +- .../cert-manager/catalogd/kustomization.yaml | 1 - .../catalogd/resources/certificate.yaml | 2 +- .../operator-controller/kustomization.yaml | 1 - .../resources/manager_cert.yaml | 1 + .../e2e/coverage/kustomization.yaml | 1 - .../manager_e2e_coverage_copy_pod.yaml | 1 + .../coverage/manager_e2e_coverage_pvc.yaml | 1 + .../e2e/registries-conf/kustomization.yaml | 1 - .../registries_conf_configmap.yaml | 2 +- .../core/clustercatalog_controller.go | 4 +- .../clusterextension_controller.go | 4 +- scripts/install.tpl.sh | 46 +++++++++++++++++-- 34 files changed, 77 insertions(+), 38 deletions(-) diff --git a/config/base/catalogd/kustomization.yaml b/config/base/catalogd/kustomization.yaml index b30ee25403..d4ebee2d54 100644 --- a/config/base/catalogd/kustomization.yaml +++ b/config/base/catalogd/kustomization.yaml @@ -1,7 +1,6 @@ # Does not include the CRD, which must be added separately (it's non-namespaced) apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -namespace: olmv1-system namePrefix: catalogd- resources: - rbac diff --git a/config/base/catalogd/manager/manager.yaml b/config/base/catalogd/manager/manager.yaml index 370813592d..06199f2935 100644 --- a/config/base/catalogd/manager/manager.yaml +++ b/config/base/catalogd/manager/manager.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: controller-manager - namespace: system + namespace: olmv1-system annotations: kubectl.kubernetes.io/default-logs-container: manager labels: diff --git a/config/base/catalogd/manager/network_policy.yaml b/config/base/catalogd/manager/network_policy.yaml index 853b54a372..27df081933 100644 --- a/config/base/catalogd/manager/network_policy.yaml +++ b/config/base/catalogd/manager/network_policy.yaml @@ -2,7 +2,7 @@ apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: controller-manager - namespace: system + namespace: olmv1-system spec: podSelector: matchLabels: diff --git a/config/base/catalogd/manager/service.yaml b/config/base/catalogd/manager/service.yaml index 693b687f39..4f423ae427 100644 --- a/config/base/catalogd/manager/service.yaml +++ b/config/base/catalogd/manager/service.yaml @@ -5,7 +5,7 @@ metadata: app.kubernetes.io/part-of: olm app.kubernetes.io/name: catalogd name: service - namespace: system + namespace: olmv1-system spec: selector: control-plane: catalogd-controller-manager diff --git a/config/base/catalogd/rbac/auth_proxy_role_binding.yaml b/config/base/catalogd/rbac/auth_proxy_role_binding.yaml index 2efcf8dd81..1c44eec983 100644 --- a/config/base/catalogd/rbac/auth_proxy_role_binding.yaml +++ b/config/base/catalogd/rbac/auth_proxy_role_binding.yaml @@ -12,4 +12,4 @@ roleRef: subjects: - kind: ServiceAccount name: controller-manager - namespace: system + namespace: olmv1-system diff --git a/config/base/catalogd/rbac/leader_election_role.yaml b/config/base/catalogd/rbac/leader_election_role.yaml index 37564d0841..1b89e50a7a 100644 --- a/config/base/catalogd/rbac/leader_election_role.yaml +++ b/config/base/catalogd/rbac/leader_election_role.yaml @@ -6,6 +6,7 @@ metadata: app.kubernetes.io/part-of: olm app.kubernetes.io/name: catalogd name: leader-election-role + namespace: olmv1-system rules: - apiGroups: - "" diff --git a/config/base/catalogd/rbac/leader_election_role_binding.yaml b/config/base/catalogd/rbac/leader_election_role_binding.yaml index 6ad0ccf99a..2f198acfa1 100644 --- a/config/base/catalogd/rbac/leader_election_role_binding.yaml +++ b/config/base/catalogd/rbac/leader_election_role_binding.yaml @@ -5,6 +5,7 @@ metadata: app.kubernetes.io/part-of: olm app.kubernetes.io/name: catalogd name: leader-election-rolebinding + namespace: olmv1-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -12,4 +13,4 @@ roleRef: subjects: - kind: ServiceAccount name: controller-manager - namespace: system + namespace: olmv1-system diff --git a/config/base/catalogd/rbac/role.yaml b/config/base/catalogd/rbac/role.yaml index 0b15af0c6c..c887c7c4f1 100644 --- a/config/base/catalogd/rbac/role.yaml +++ b/config/base/catalogd/rbac/role.yaml @@ -35,7 +35,7 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: manager-role - namespace: system + namespace: olmv1-system rules: - apiGroups: - "" diff --git a/config/base/catalogd/rbac/role_binding.yaml b/config/base/catalogd/rbac/role_binding.yaml index 41dc229bc7..5ebca546b1 100644 --- a/config/base/catalogd/rbac/role_binding.yaml +++ b/config/base/catalogd/rbac/role_binding.yaml @@ -12,7 +12,7 @@ roleRef: subjects: - kind: ServiceAccount name: controller-manager - namespace: system + namespace: olmv1-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -21,7 +21,7 @@ metadata: app.kubernetes.io/part-of: olm app.kubernetes.io/name: catalogd name: manager-rolebinding - namespace: system + namespace: olmv1-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -29,4 +29,4 @@ roleRef: subjects: - kind: ServiceAccount name: controller-manager - namespace: system + namespace: olmv1-system diff --git a/config/base/catalogd/rbac/service_account.yaml b/config/base/catalogd/rbac/service_account.yaml index 3f0e7af74d..102667ae45 100644 --- a/config/base/catalogd/rbac/service_account.yaml +++ b/config/base/catalogd/rbac/service_account.yaml @@ -5,4 +5,4 @@ metadata: app.kubernetes.io/part-of: olm app.kubernetes.io/name: catalogd name: controller-manager - namespace: system + namespace: olmv1-system diff --git a/config/base/common/namespace.yaml b/config/base/common/namespace.yaml index 99d47415f2..ede0bfd8f1 100644 --- a/config/base/common/namespace.yaml +++ b/config/base/common/namespace.yaml @@ -5,4 +5,4 @@ metadata: app.kubernetes.io/part-of: olm pod-security.kubernetes.io/enforce: restricted pod-security.kubernetes.io/enforce-version: latest - name: system + name: olmv1-system diff --git a/config/base/common/network_policy.yaml b/config/base/common/network_policy.yaml index 86d3529751..e63015da33 100644 --- a/config/base/common/network_policy.yaml +++ b/config/base/common/network_policy.yaml @@ -2,7 +2,7 @@ apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-all-traffic - namespace: system + namespace: olmv1-system spec: podSelector: { } policyTypes: diff --git a/config/base/operator-controller/kustomization.yaml b/config/base/operator-controller/kustomization.yaml index e10e2bbaa4..500860cf63 100644 --- a/config/base/operator-controller/kustomization.yaml +++ b/config/base/operator-controller/kustomization.yaml @@ -1,7 +1,6 @@ # Does not include the CRD, which must be added separately (it's non-namespaced) apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -namespace: olmv1-system namePrefix: operator-controller- resources: - rbac diff --git a/config/base/operator-controller/manager/manager.yaml b/config/base/operator-controller/manager/manager.yaml index 611c5816c8..dda835cf3a 100644 --- a/config/base/operator-controller/manager/manager.yaml +++ b/config/base/operator-controller/manager/manager.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: controller-manager - namespace: system + namespace: olmv1-system annotations: kubectl.kubernetes.io/default-logs-container: manager labels: diff --git a/config/base/operator-controller/manager/network_policy.yaml b/config/base/operator-controller/manager/network_policy.yaml index 2e68beabee..1659cea05e 100644 --- a/config/base/operator-controller/manager/network_policy.yaml +++ b/config/base/operator-controller/manager/network_policy.yaml @@ -2,7 +2,7 @@ apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: controller-manager - namespace: system + namespace: olmv1-system spec: podSelector: matchLabels: diff --git a/config/base/operator-controller/manager/service.yaml b/config/base/operator-controller/manager/service.yaml index b352a0aa1b..752f62f8fe 100644 --- a/config/base/operator-controller/manager/service.yaml +++ b/config/base/operator-controller/manager/service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: service - namespace: system + namespace: olmv1-system labels: control-plane: operator-controller-controller-manager spec: diff --git a/config/base/operator-controller/rbac/auth_proxy_role_binding.yaml b/config/base/operator-controller/rbac/auth_proxy_role_binding.yaml index ec7acc0a1b..976e53bcd4 100644 --- a/config/base/operator-controller/rbac/auth_proxy_role_binding.yaml +++ b/config/base/operator-controller/rbac/auth_proxy_role_binding.yaml @@ -9,4 +9,4 @@ roleRef: subjects: - kind: ServiceAccount name: controller-manager - namespace: system + namespace: olmv1-system diff --git a/config/base/operator-controller/rbac/leader_election_role.yaml b/config/base/operator-controller/rbac/leader_election_role.yaml index 4190ec8059..ef2d330fd5 100644 --- a/config/base/operator-controller/rbac/leader_election_role.yaml +++ b/config/base/operator-controller/rbac/leader_election_role.yaml @@ -3,6 +3,7 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: leader-election-role + namespace: olmv1-system rules: - apiGroups: - "" diff --git a/config/base/operator-controller/rbac/leader_election_role_binding.yaml b/config/base/operator-controller/rbac/leader_election_role_binding.yaml index 1d1321ed4f..f0c49d7fd5 100644 --- a/config/base/operator-controller/rbac/leader_election_role_binding.yaml +++ b/config/base/operator-controller/rbac/leader_election_role_binding.yaml @@ -2,6 +2,7 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: leader-election-rolebinding + namespace: olmv1-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -9,4 +10,4 @@ roleRef: subjects: - kind: ServiceAccount name: controller-manager - namespace: system + namespace: olmv1-system diff --git a/config/base/operator-controller/rbac/role.yaml b/config/base/operator-controller/rbac/role.yaml index d18eb4c6c7..bb1cbe6265 100644 --- a/config/base/operator-controller/rbac/role.yaml +++ b/config/base/operator-controller/rbac/role.yaml @@ -62,7 +62,7 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: manager-role - namespace: system + namespace: olmv1-system rules: - apiGroups: - "" diff --git a/config/base/operator-controller/rbac/role_binding.yaml b/config/base/operator-controller/rbac/role_binding.yaml index fa331e3d41..430b599b31 100644 --- a/config/base/operator-controller/rbac/role_binding.yaml +++ b/config/base/operator-controller/rbac/role_binding.yaml @@ -9,13 +9,13 @@ roleRef: subjects: - kind: ServiceAccount name: controller-manager - namespace: system + namespace: olmv1-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: manager-rolebinding - namespace: system + namespace: olmv1-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -23,4 +23,4 @@ roleRef: subjects: - kind: ServiceAccount name: controller-manager - namespace: system + namespace: olmv1-system diff --git a/config/base/operator-controller/rbac/service_account.yaml b/config/base/operator-controller/rbac/service_account.yaml index 7cd6025bfc..22f830f73b 100644 --- a/config/base/operator-controller/rbac/service_account.yaml +++ b/config/base/operator-controller/rbac/service_account.yaml @@ -2,4 +2,4 @@ apiVersion: v1 kind: ServiceAccount metadata: name: controller-manager - namespace: system + namespace: olmv1-system diff --git a/config/components/cert-manager/catalogd/kustomization.yaml b/config/components/cert-manager/catalogd/kustomization.yaml index f603a00996..1e14d0abf6 100644 --- a/config/components/cert-manager/catalogd/kustomization.yaml +++ b/config/components/cert-manager/catalogd/kustomization.yaml @@ -1,6 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1alpha1 kind: Component -namespace: olmv1-system resources: - resources/certificate.yaml patches: diff --git a/config/components/cert-manager/catalogd/resources/certificate.yaml b/config/components/cert-manager/catalogd/resources/certificate.yaml index cacb0bc9b2..63375760ca 100644 --- a/config/components/cert-manager/catalogd/resources/certificate.yaml +++ b/config/components/cert-manager/catalogd/resources/certificate.yaml @@ -2,7 +2,7 @@ apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: catalogd-service-cert - namespace: system + namespace: olmv1-system spec: secretName: catalogd-service-cert-git-version dnsNames: diff --git a/config/components/cert-manager/operator-controller/kustomization.yaml b/config/components/cert-manager/operator-controller/kustomization.yaml index 6c4e13975b..9f276280fb 100644 --- a/config/components/cert-manager/operator-controller/kustomization.yaml +++ b/config/components/cert-manager/operator-controller/kustomization.yaml @@ -1,6 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1alpha1 kind: Component -namespace: olmv1-system resources: - resources/manager_cert.yaml patches: diff --git a/config/components/cert-manager/operator-controller/resources/manager_cert.yaml b/config/components/cert-manager/operator-controller/resources/manager_cert.yaml index 96f131b7e2..c001d946a3 100644 --- a/config/components/cert-manager/operator-controller/resources/manager_cert.yaml +++ b/config/components/cert-manager/operator-controller/resources/manager_cert.yaml @@ -2,6 +2,7 @@ apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: olmv1-cert + namespace: olmv1-system spec: secretName: olmv1-cert dnsNames: diff --git a/config/components/e2e/coverage/kustomization.yaml b/config/components/e2e/coverage/kustomization.yaml index 6d3084989c..7679914bdb 100644 --- a/config/components/e2e/coverage/kustomization.yaml +++ b/config/components/e2e/coverage/kustomization.yaml @@ -1,6 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1alpha1 kind: Component -namespace: olmv1-system resources: - manager_e2e_coverage_pvc.yaml - manager_e2e_coverage_copy_pod.yaml diff --git a/config/components/e2e/coverage/manager_e2e_coverage_copy_pod.yaml b/config/components/e2e/coverage/manager_e2e_coverage_copy_pod.yaml index 7794ba97d6..5c5c97bf7b 100644 --- a/config/components/e2e/coverage/manager_e2e_coverage_copy_pod.yaml +++ b/config/components/e2e/coverage/manager_e2e_coverage_copy_pod.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: Pod metadata: name: e2e-coverage-copy-pod + namespace: olmv1-system spec: restartPolicy: Never securityContext: diff --git a/config/components/e2e/coverage/manager_e2e_coverage_pvc.yaml b/config/components/e2e/coverage/manager_e2e_coverage_pvc.yaml index 126d4d4e63..02c84acfd1 100644 --- a/config/components/e2e/coverage/manager_e2e_coverage_pvc.yaml +++ b/config/components/e2e/coverage/manager_e2e_coverage_pvc.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: e2e-coverage + namespace: olmv1-system spec: accessModes: - ReadWriteOnce diff --git a/config/components/e2e/registries-conf/kustomization.yaml b/config/components/e2e/registries-conf/kustomization.yaml index e482624290..ecb6bd1ba3 100644 --- a/config/components/e2e/registries-conf/kustomization.yaml +++ b/config/components/e2e/registries-conf/kustomization.yaml @@ -1,6 +1,5 @@ apiVersion: kustomize.config.k8s.io/v1alpha1 kind: Component -namespace: olmv1-system resources: - registries_conf_configmap.yaml patches: diff --git a/config/components/e2e/registries-conf/registries_conf_configmap.yaml b/config/components/e2e/registries-conf/registries_conf_configmap.yaml index 2604c78f56..e216113a71 100644 --- a/config/components/e2e/registries-conf/registries_conf_configmap.yaml +++ b/config/components/e2e/registries-conf/registries_conf_configmap.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: e2e-registries-conf - namespace: system + namespace: olmv1-system data: registries.conf: | [[registry]] diff --git a/internal/catalogd/controllers/core/clustercatalog_controller.go b/internal/catalogd/controllers/core/clustercatalog_controller.go index ec3dc525df..32ed52e0a8 100644 --- a/internal/catalogd/controllers/core/clustercatalog_controller.go +++ b/internal/catalogd/controllers/core/clustercatalog_controller.go @@ -79,8 +79,8 @@ type storedCatalogData struct { //+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clustercatalogs,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clustercatalogs/status,verbs=get;update;patch //+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clustercatalogs/finalizers,verbs=update -//+kubebuilder:rbac:namespace=system,groups=core,resources=secrets,verbs=get;list;watch -//+kubebuilder:rbac:namespace=system,groups=core,resources=serviceaccounts,verbs=get;list;watch +//+kubebuilder:rbac:namespace=olmv1-system,groups=core,resources=secrets,verbs=get;list;watch +//+kubebuilder:rbac:namespace=olmv1-system,groups=core,resources=serviceaccounts,verbs=get;list;watch // Reconcile is part of the main kubernetes reconciliation loop which aims to // move the current state of the cluster closer to the desired state. diff --git a/internal/operator-controller/controllers/clusterextension_controller.go b/internal/operator-controller/controllers/clusterextension_controller.go index 5b180d9ccc..24824bfd12 100644 --- a/internal/operator-controller/controllers/clusterextension_controller.go +++ b/internal/operator-controller/controllers/clusterextension_controller.go @@ -93,9 +93,9 @@ type InstalledBundleGetter interface { //+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterextensions,verbs=get;list;watch;update;patch //+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterextensions/status,verbs=update;patch //+kubebuilder:rbac:groups=olm.operatorframework.io,resources=clusterextensions/finalizers,verbs=update -//+kubebuilder:rbac:namespace=system,groups=core,resources=secrets,verbs=create;update;patch;delete;deletecollection;get;list;watch +//+kubebuilder:rbac:namespace=olmv1-system,groups=core,resources=secrets,verbs=create;update;patch;delete;deletecollection;get;list;watch //+kubebuilder:rbac:groups=core,resources=serviceaccounts/token,verbs=create -//+kubebuilder:rbac:namespace=system,groups=core,resources=serviceaccounts,verbs=get;list;watch +//+kubebuilder:rbac:namespace=olmv1-system,groups=core,resources=serviceaccounts,verbs=get;list;watch //+kubebuilder:rbac:groups=apiextensions.k8s.io,resources=customresourcedefinitions,verbs=get //+kubebuilder:rbac:groups=rbac.authorization.k8s.io,resources=clusterroles;clusterrolebindings;roles;rolebindings,verbs=list;watch diff --git a/scripts/install.tpl.sh b/scripts/install.tpl.sh index 8088a25158..2ddf79856b 100644 --- a/scripts/install.tpl.sh +++ b/scripts/install.tpl.sh @@ -3,6 +3,39 @@ set -euo pipefail IFS=$'\n\t' olmv1_manifest=$MANIFEST +olmv1_namespace=olmv1-system + +usage() { + cmd=$(basename $0) + cat <] [-h] + +DESCRIPTION + Installs OLMv1 in the provided with cert-manager. + A kubernetes configuration must already be present. + + -n + install OLMv1 in the given . Defaults to olmv1-system. + + -h + help (this text) +EOF + exit 0 +} + + +while getopts n:h opt; do + case ${opt} in + n) olmv1_namespace=${OPTARG} ;; + h) usage ;; + *) echo "Unknown option" >&2 + exit 1 + esac +done if [[ -z "$olmv1_manifest" ]]; then echo "Error: Missing required MANIFEST variable" @@ -69,11 +102,16 @@ kubectl_wait "cert-manager" "deployment/cert-manager" "60s" kubectl_wait_for_query "mutatingwebhookconfigurations/cert-manager-webhook" '{.webhooks[0].clientConfig.caBundle}' 60 5 kubectl_wait_for_query "validatingwebhookconfigurations/cert-manager-webhook" '{.webhooks[0].clientConfig.caBundle}' 60 5 -kubectl apply -f "${olmv1_manifest}" +# Change the file into a file:// url +if [ -f "${olmv1_manifest}" ]; then + olmv1_manifest=file://localhost$(realpath ${olmv1_manifest}) +fi + +curl -L -s "${olmv1_manifest}" | sed "s/olmv1-system/${olmv1_namespace}/g" | kubectl apply -f - # Wait for the rollout, and then wait for the deployment to be Available -kubectl_wait_rollout "olmv1-system" "deployment/catalogd-controller-manager" "60s" -kubectl_wait "olmv1-system" "deployment/catalogd-controller-manager" "60s" -kubectl_wait "olmv1-system" "deployment/operator-controller-controller-manager" "60s" +kubectl_wait_rollout "${olmv1_namespace}" "deployment/catalogd-controller-manager" "60s" +kubectl_wait "${olmv1_namespace}" "deployment/catalogd-controller-manager" "60s" +kubectl_wait "${olmv1_namespace}" "deployment/operator-controller-controller-manager" "60s" if [[ "${install_default_catalogs}" != "false" ]]; then kubectl apply -f "${default_catalogs_manifest}"