From a415e2aaf9a9c860bb2d835950cb8faf021f67ea Mon Sep 17 00:00:00 2001 From: Zhiwei Yin Date: Thu, 15 Oct 2020 21:44:43 +0800 Subject: [PATCH] upgrade operator-sdk and olm --- Makefile | 38 ++- deploy/cluster-manager/PROJECT | 2 + ...ter-management.io_clustermanagers.crd.yaml | 0 .../config/crds/kustomization.yaml | 2 + ...cluster-manager.clusterserviceversion.yaml | 89 ++++++ .../config/manifests/kustomization.yaml | 4 + .../config/operator/kustomization.yaml | 4 + .../config/operator/namespace.yaml | 4 + .../{ => config/operator}/operator.yaml | 0 .../operator}/service_account.yaml | 0 .../{ => config/rbac}/cluster_role.yaml | 0 .../rbac}/cluster_role_binding.yaml | 0 .../config/rbac/kustomization.yaml | 3 + .../config/samples/kustomization.yaml | 2 + ...cluster-management_clustermanagers.cr.yaml | 0 ...ter-management.io_clustermanagers.crd.yaml | 0 ...-manager.v0.2.0.clusterserviceversion.yaml | 291 ++++++++++++++++++ ...kage.yaml => cluster-manager.package.yaml} | 2 +- ...cluster-manager.clusterserviceversion.yaml | 18 +- ...cluster-management.io_clustermanagers.yaml | 150 +++++++++ deploy/klusterlet/PROJECT | 2 + ...cluster-management.io_klusterlets.crd.yaml | 0 .../klusterlet/config/crds/kustomization.yaml | 2 + .../klusterlet.clusterserviceversion.yaml | 99 ++++++ .../config/manifests/kustomization.yaml | 4 + .../config/operator/kustomization.yaml | 4 + .../klusterlet/config/operator/namespace.yaml | 4 + .../{ => config/operator}/operator.yaml | 0 .../operator}/service_account.yaml | 0 .../{ => config/rbac}/cluster_role.yaml | 0 .../rbac}/cluster_role_binding.yaml | 0 .../klusterlet/config/rbac/kustomization.yaml | 3 + .../config/samples/kustomization.yaml | 2 + ...pen-cluster-management_klusterlets.cr.yaml | 0 ...cluster-management.io_klusterlets.crd.yaml | 0 ...usterlet.v0.2.0.clusterserviceversion.yaml | 289 +++++++++++++++++ .../klusterlet/klusterlet.package.yaml | 2 +- .../klusterlet.clusterserviceversion.yaml | 16 +- ...pen-cluster-management.io_klusterlets.yaml | 170 ++++++++++ hack/copy-crds.sh | 4 +- hack/verify-crds.sh | 4 +- 41 files changed, 1180 insertions(+), 34 deletions(-) create mode 100644 deploy/cluster-manager/PROJECT rename deploy/cluster-manager/{ => config}/crds/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml (100%) create mode 100644 deploy/cluster-manager/config/crds/kustomization.yaml create mode 100644 deploy/cluster-manager/config/manifests/bases/cluster-manager.clusterserviceversion.yaml create mode 100644 deploy/cluster-manager/config/manifests/kustomization.yaml create mode 100644 deploy/cluster-manager/config/operator/kustomization.yaml create mode 100644 deploy/cluster-manager/config/operator/namespace.yaml rename deploy/cluster-manager/{ => config/operator}/operator.yaml (100%) rename deploy/cluster-manager/{ => config/operator}/service_account.yaml (100%) rename deploy/cluster-manager/{ => config/rbac}/cluster_role.yaml (100%) rename deploy/cluster-manager/{ => config/rbac}/cluster_role_binding.yaml (100%) create mode 100644 deploy/cluster-manager/config/rbac/kustomization.yaml create mode 100644 deploy/cluster-manager/config/samples/kustomization.yaml rename deploy/cluster-manager/{crds => config/samples}/operator_open-cluster-management_clustermanagers.cr.yaml (100%) rename deploy/cluster-manager/olm-catalog/cluster-manager/{manifests => 0.2.0}/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml (100%) create mode 100644 deploy/cluster-manager/olm-catalog/cluster-manager/0.2.0/cluster-manager.v0.2.0.clusterserviceversion.yaml rename deploy/cluster-manager/olm-catalog/cluster-manager/{cluster-manger.package.yaml => cluster-manager.package.yaml} (66%) create mode 100644 deploy/cluster-manager/olm-catalog/cluster-manager/manifests/operator.open-cluster-management.io_clustermanagers.yaml create mode 100644 deploy/klusterlet/PROJECT rename deploy/klusterlet/{ => config}/crds/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml (100%) create mode 100644 deploy/klusterlet/config/crds/kustomization.yaml create mode 100644 deploy/klusterlet/config/manifests/bases/klusterlet.clusterserviceversion.yaml create mode 100644 deploy/klusterlet/config/manifests/kustomization.yaml create mode 100644 deploy/klusterlet/config/operator/kustomization.yaml create mode 100644 deploy/klusterlet/config/operator/namespace.yaml rename deploy/klusterlet/{ => config/operator}/operator.yaml (100%) rename deploy/klusterlet/{ => config/operator}/service_account.yaml (100%) rename deploy/klusterlet/{ => config/rbac}/cluster_role.yaml (100%) rename deploy/klusterlet/{ => config/rbac}/cluster_role_binding.yaml (100%) create mode 100644 deploy/klusterlet/config/rbac/kustomization.yaml create mode 100644 deploy/klusterlet/config/samples/kustomization.yaml rename deploy/klusterlet/{crds => config/samples}/operator_open-cluster-management_klusterlets.cr.yaml (100%) rename deploy/klusterlet/olm-catalog/klusterlet/{manifests => 0.2.0}/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml (100%) create mode 100644 deploy/klusterlet/olm-catalog/klusterlet/0.2.0/klusterlet.v0.2.0.clusterserviceversion.yaml create mode 100644 deploy/klusterlet/olm-catalog/klusterlet/manifests/operator.open-cluster-management.io_klusterlets.yaml diff --git a/Makefile b/Makefile index abd291d87..f120ad85f 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ IMAGE_TAG?=latest IMAGE_NAME?=$(IMAGE_REGISTRY)/registration-operator:$(IMAGE_TAG) # CSV_VERSION is used to generate new CSV manifests -CSV_VERSION?=0.2.0 +CSV_VERSION?=0.3.0 # WORK_IMAGE can be set in the env to override calculated value WORK_TAG?=latest @@ -28,10 +28,11 @@ REGISTRATION_TAG?=latest REGISTRATION_IMAGE?=$(IMAGE_REGISTRY)/registration:$(REGISTRATION_TAG) OPERATOR_SDK?=$(PERMANENT_TMP_GOPATH)/bin/operator-sdk -OPERATOR_SDK_VERSION?=v0.17.0 +OPERATOR_SDK_VERSION?=v1.0.1 operatorsdk_gen_dir:=$(dir $(OPERATOR_SDK)) # On openshift, OLM is installed into openshift-operator-lifecycle-manager OLM_NAMESPACE?=olm +OLM_VERSION?=0.16.1 KUBECTL?=kubectl KUBECONFIG?=./.kubeconfig @@ -66,10 +67,17 @@ verify-crds: verify: verify-crds -# should set the correct IMAGE_TAG and IMAGE_NAME for the new csv update-csv: ensure-operator-sdk - $(OPERATOR_SDK) generate csv --crd-dir=deploy/cluster-manager/crds --deploy-dir=deploy/cluster-manager --output-dir=deploy/cluster-manager/olm-catalog/cluster-manager --operator-name=cluster-manager --csv-version=$(CSV_VERSION) - $(OPERATOR_SDK) generate csv --crd-dir=deploy/klusterlet/crds --deploy-dir=deploy/klusterlet --output-dir=deploy/klusterlet/olm-catalog/klusterlet --operator-name=klusterlet --csv-version=$(CSV_VERSION) + cd deploy/cluster-manager && ../../$(OPERATOR_SDK) generate bundle --manifests --deploy-dir config/ --crds-dir config/crds/ --output-dir olm-catalog/cluster-manager/ --version $(CSV_VERSION) + cd deploy/klusterlet && ../../$(OPERATOR_SDK) generate bundle --manifests --deploy-dir config/ --crds-dir config/crds/ --output-dir olm-catalog/klusterlet/ --version=$(CSV_VERSION) + + # TODO: delete this when operator-sdk fix this issue that sets 'null' to array in yaml. + $(SED_CMD) -e "s,rules: null,rules: []," -i deploy/cluster-manager/olm-catalog/cluster-manager/manifests/cluster-manager.clusterserviceversion.yaml + $(SED_CMD) -e "s,rules: null,rules: []," -i deploy/klusterlet/olm-catalog/klusterlet/manifests/klusterlet.clusterserviceversion.yaml + + # delete useless serviceaccounts in manifests although they are copied from config by operator-sdk. + rm ./deploy/cluster-manager/olm-catalog/cluster-manager/manifests/cluster-manager_v1_serviceaccount.yaml + rm ./deploy/klusterlet/olm-catalog/klusterlet/manifests/klusterlet_v1_serviceaccount.yaml munge-hub-csv: mkdir -p munge-csv @@ -90,20 +98,20 @@ deploy: install-olm deploy-hub deploy-spoke unmunge-csv clean-deploy: clean-spoke clean-hub install-olm: ensure-operator-sdk - $(KUBECTL) get crds | grep clusterserviceversion ; if [ $$? -ne 0 ] ; then $(OPERATOR_SDK) olm install --version 0.15.0; fi + $(KUBECTL) get crds | grep clusterserviceversion ; if [ $$? -ne 0 ] ; then $(OPERATOR_SDK) olm install --version $(OLM_VERSION); fi $(KUBECTL) get ns open-cluster-management ; if [ $$? -ne 0 ] ; then $(KUBECTL) create ns open-cluster-management ; fi deploy-hub: deploy-hub-operator apply-hub-cr deploy-hub-operator: install-olm munge-hub-csv - $(OPERATOR_SDK) run --olm --operator-namespace open-cluster-management --operator-version $(CSV_VERSION) --manifests deploy/cluster-manager/olm-catalog/cluster-manager --olm-namespace $(OLM_NAMESPACE) --timeout 10m - + $(OPERATOR_SDK) run packagemanifests deploy/cluster-manager/olm-catalog/cluster-manager/ --namespace open-cluster-management --version $(CSV_VERSION) --install-mode SingleNamespace=open-cluster-management --timeout=10m + apply-hub-cr: - $(SED_CMD) -e "s,quay.io/open-cluster-management/registration,$(REGISTRATION_IMAGE)," deploy/cluster-manager/crds/operator_open-cluster-management_clustermanagers.cr.yaml | $(KUBECTL) apply -f - + $(SED_CMD) -e "s,quay.io/open-cluster-management/registration,$(REGISTRATION_IMAGE)," deploy/cluster-manager/config/samples/operator_open-cluster-management_clustermanagers.cr.yaml | $(KUBECTL) apply -f - clean-hub: ensure-operator-sdk - $(KUBECTL) delete -f deploy/cluster-manager/crds/operator_open-cluster-management_clustermanagers.cr.yaml --ignore-not-found - $(OPERATOR_SDK) cleanup --olm --operator-namespace open-cluster-management --operator-version $(CSV_VERSION) --manifests deploy/cluster-manager/olm-catalog/cluster-manager --olm-namespace $(OLM_NAMESPACE) --timeout 10m + $(KUBECTL) delete -f deploy/cluster-manager/config/samples/operator_open-cluster-management_clustermanagers.cr.yaml --ignore-not-found + $(OPERATOR_SDK) cleanup cluster-manager --namespace open-cluster-management --timeout 10m cluster-ip: CLUSTER_IP?=$(shell $(KUBECTL) get svc kubernetes -n default -o jsonpath="{.spec.clusterIP}") @@ -127,14 +135,14 @@ e2e-bootstrap-secret: cluster-ip deploy-spoke: deploy-spoke-operator apply-spoke-cr deploy-spoke-operator: install-olm munge-spoke-csv bootstrap-secret - $(OPERATOR_SDK) run --olm --operator-namespace open-cluster-management --operator-version $(CSV_VERSION) --manifests deploy/klusterlet/olm-catalog/klusterlet --olm-namespace $(OLM_NAMESPACE) --timeout 10m + $(OPERATOR_SDK) run packagemanifests deploy/klusterlet/olm-catalog/klusterlet/ --namespace open-cluster-management --version $(CSV_VERSION) --install-mode SingleNamespace=open-cluster-management --timeout=10m apply-spoke-cr: - $(SED_CMD) -e "s,quay.io/open-cluster-management/registration,$(REGISTRATION_IMAGE)," -e "s,quay.io/open-cluster-management/work,$(WORK_IMAGE)," deploy/klusterlet/crds/operator_open-cluster-management_klusterlets.cr.yaml | $(KUBECTL) apply -f - + $(SED_CMD) -e "s,quay.io/open-cluster-management/registration,$(REGISTRATION_IMAGE)," -e "s,quay.io/open-cluster-management/work,$(WORK_IMAGE)," deploy/klusterlet/config/samples/operator_open-cluster-management_klusterlets.cr.yaml | $(KUBECTL) apply -f - clean-spoke: ensure-operator-sdk - $(KUBECTL) delete -f deploy/klusterlet/crds/operator_open-cluster-management_klusterlets.cr.yaml --ignore-not-found - $(OPERATOR_SDK) cleanup --olm --operator-namespace open-cluster-management --operator-version $(CSV_VERSION) --manifests deploy/klusterlet/olm-catalog/klusterlet --olm-namespace $(OLM_NAMESPACE) --timeout 10m + $(KUBECTL) delete -f deploy/klusterlet/config/samples/operator_open-cluster-management_klusterlets.cr.yaml --ignore-not-found + $(OPERATOR_SDK) cleanup klusterlet --namespace open-cluster-management --timeout 10m test-e2e: deploy-hub deploy-spoke-operator run-e2e diff --git a/deploy/cluster-manager/PROJECT b/deploy/cluster-manager/PROJECT new file mode 100644 index 000000000..9f21dd762 --- /dev/null +++ b/deploy/cluster-manager/PROJECT @@ -0,0 +1,2 @@ +projectName: cluster-manager +version: 2 diff --git a/deploy/cluster-manager/crds/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml b/deploy/cluster-manager/config/crds/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml similarity index 100% rename from deploy/cluster-manager/crds/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml rename to deploy/cluster-manager/config/crds/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml diff --git a/deploy/cluster-manager/config/crds/kustomization.yaml b/deploy/cluster-manager/config/crds/kustomization.yaml new file mode 100644 index 000000000..0b3ceedaa --- /dev/null +++ b/deploy/cluster-manager/config/crds/kustomization.yaml @@ -0,0 +1,2 @@ +resources: + - 0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml diff --git a/deploy/cluster-manager/config/manifests/bases/cluster-manager.clusterserviceversion.yaml b/deploy/cluster-manager/config/manifests/bases/cluster-manager.clusterserviceversion.yaml new file mode 100644 index 000000000..fb990b59f --- /dev/null +++ b/deploy/cluster-manager/config/manifests/bases/cluster-manager.clusterserviceversion.yaml @@ -0,0 +1,89 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: "[]" + capabilities: Basic Install + categories: Integration & Delivery,OpenShift Optional + certified: "false" + containerImage: quay.io/repository/open-cluster-management/registration-operator:latest + createdAt: "2020-10-15T20:00:31Z" + description: Manages the installation and upgrade of the ClusterManager. + repository: https://github.com/open-cluster-management/registration-operator + support: Red Hat, Inc. + name: cluster-manager.vX.Y.Z + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: ClusterManager defines the configurations of controllers running + hub that govern registration and work distribution for attached Klusterlets + displayName: ClusterManager + kind: ClusterManager + name: clustermanagers.operator.open-cluster-management.io + version: v1 + description: | + The Cluster Manager provides the multicluster hub, which can manage Kubernetes-based clusters across data centers, public clouds, and private clouds. This operator supports the installation and upgrade of ClusterManager. + + ## How to Install + Install ClusterManager operator by following instructions in top right button `Install`. After installing the operator, create an instance of the ClusterManager resource to install the ClusterManager. + + The pods of ClusterManager are created in the `open-cluster-management-hub` namespace: + + ``` + $ kubectl get pods -n open-cluster-management-hub + NAME READY STATUS RESTARTS AGE + cluster-manager-registration-controller-7c55644568-kms5c 1/1 Running 0 7h13m + cluster-manager-registration-controller-7c55644568-mth8f 1/1 Running 0 7h13m + cluster-manager-registration-controller-7c55644568-wftnj 1/1 Running 0 7h13m + cluster-manager-registration-webhook-77888b7dc4-bwccm 1/1 Running 0 7h13m + cluster-manager-registration-webhook-77888b7dc4-qk4tj 1/1 Running 0 7h13m + cluster-manager-registration-webhook-77888b7dc4-z9vbp 1/1 Running 0 7h13m + ``` + + There is a ManagedCluster created in the Hub cluster when the managed cluster is registered to the Hub cluster. + + ``` + $ kubectl get managedclusters.cluster.open-cluster-management.io + NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE + cluster-dev true True True 7h20m + cluster-test false https://127.0.0.1:8443 7h25m + ``` + displayName: Cluster Manager + icon: + - base64data: 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 + mediatype: image/png + install: + spec: null + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - open-cluster-management + - ClusterManager + links: + - name: Registration Operator + url: https://github.com/open-cluster-management/registration-operator + maintainers: + - email: pmorie@redhat.com + name: Paul Morie + - email: deads@redhat.com + name: David Eads + - email: jqiu@redhat.com + name: Jian Qiu + maturity: alpha + provider: + name: Red Hat, Inc. + replaces: cluster-manager.v0.2.0 + selector: + matchLabels: + app: cluster-manager + version: 0.3.0 diff --git a/deploy/cluster-manager/config/manifests/kustomization.yaml b/deploy/cluster-manager/config/manifests/kustomization.yaml new file mode 100644 index 000000000..7670f39ac --- /dev/null +++ b/deploy/cluster-manager/config/manifests/kustomization.yaml @@ -0,0 +1,4 @@ +bases: + - ../crds + - ../rbac + - ../operator diff --git a/deploy/cluster-manager/config/operator/kustomization.yaml b/deploy/cluster-manager/config/operator/kustomization.yaml new file mode 100644 index 000000000..0db267713 --- /dev/null +++ b/deploy/cluster-manager/config/operator/kustomization.yaml @@ -0,0 +1,4 @@ +resources: + - namespace.yaml + - service_account.yaml + - operator.yaml diff --git a/deploy/cluster-manager/config/operator/namespace.yaml b/deploy/cluster-manager/config/operator/namespace.yaml new file mode 100644 index 000000000..acde60f14 --- /dev/null +++ b/deploy/cluster-manager/config/operator/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: open-cluster-management diff --git a/deploy/cluster-manager/operator.yaml b/deploy/cluster-manager/config/operator/operator.yaml similarity index 100% rename from deploy/cluster-manager/operator.yaml rename to deploy/cluster-manager/config/operator/operator.yaml diff --git a/deploy/cluster-manager/service_account.yaml b/deploy/cluster-manager/config/operator/service_account.yaml similarity index 100% rename from deploy/cluster-manager/service_account.yaml rename to deploy/cluster-manager/config/operator/service_account.yaml diff --git a/deploy/cluster-manager/cluster_role.yaml b/deploy/cluster-manager/config/rbac/cluster_role.yaml similarity index 100% rename from deploy/cluster-manager/cluster_role.yaml rename to deploy/cluster-manager/config/rbac/cluster_role.yaml diff --git a/deploy/cluster-manager/cluster_role_binding.yaml b/deploy/cluster-manager/config/rbac/cluster_role_binding.yaml similarity index 100% rename from deploy/cluster-manager/cluster_role_binding.yaml rename to deploy/cluster-manager/config/rbac/cluster_role_binding.yaml diff --git a/deploy/cluster-manager/config/rbac/kustomization.yaml b/deploy/cluster-manager/config/rbac/kustomization.yaml new file mode 100644 index 000000000..b8d7ee1d8 --- /dev/null +++ b/deploy/cluster-manager/config/rbac/kustomization.yaml @@ -0,0 +1,3 @@ +resources: + - cluster_role.yaml + - cluster_role_binding.yaml diff --git a/deploy/cluster-manager/config/samples/kustomization.yaml b/deploy/cluster-manager/config/samples/kustomization.yaml new file mode 100644 index 000000000..39af3bd6c --- /dev/null +++ b/deploy/cluster-manager/config/samples/kustomization.yaml @@ -0,0 +1,2 @@ +resources: + - operator_open-cluster-management_clustermanagers.cr.yaml diff --git a/deploy/cluster-manager/crds/operator_open-cluster-management_clustermanagers.cr.yaml b/deploy/cluster-manager/config/samples/operator_open-cluster-management_clustermanagers.cr.yaml similarity index 100% rename from deploy/cluster-manager/crds/operator_open-cluster-management_clustermanagers.cr.yaml rename to deploy/cluster-manager/config/samples/operator_open-cluster-management_clustermanagers.cr.yaml diff --git a/deploy/cluster-manager/olm-catalog/cluster-manager/manifests/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml b/deploy/cluster-manager/olm-catalog/cluster-manager/0.2.0/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml similarity index 100% rename from deploy/cluster-manager/olm-catalog/cluster-manager/manifests/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml rename to deploy/cluster-manager/olm-catalog/cluster-manager/0.2.0/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml diff --git a/deploy/cluster-manager/olm-catalog/cluster-manager/0.2.0/cluster-manager.v0.2.0.clusterserviceversion.yaml b/deploy/cluster-manager/olm-catalog/cluster-manager/0.2.0/cluster-manager.v0.2.0.clusterserviceversion.yaml new file mode 100644 index 000000000..b79174371 --- /dev/null +++ b/deploy/cluster-manager/olm-catalog/cluster-manager/0.2.0/cluster-manager.v0.2.0.clusterserviceversion.yaml @@ -0,0 +1,291 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "operator.open-cluster-management.io/v1", + "kind": "ClusterManager", + "metadata": { + "name": "cluster-manager" + }, + "spec": { + "registrationImagePullSpec": "quay.io/open-cluster-management/registration:0.0.2", + "workImagePullSpec": "quay.io/open-cluster-management/work:0.0.2" + } + } + ] + capabilities: Basic Install + categories: Integration & Delivery,OpenShift Optional + certified: "false" + containerImage: quay.io/repository/open-cluster-management/registration-operator:0.0.2 + createdAt: "2020-10-13T20:00:31Z" + description: Manages the installation and upgrade of the ClusterManager. + repository: https://github.com/open-cluster-management/registration-operator + support: Red Hat, Inc. + name: cluster-manager.v0.2.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: ClusterManager defines the configurations of controllers running + hub that govern registration and work distribution for attached Klusterlets + displayName: ClusterManager + kind: ClusterManager + name: clustermanagers.operator.open-cluster-management.io + version: v1 + displayName: Cluster Manager + description: | + The Cluster Manager provides the multicluster hub, which can manage Kubernetes-based clusters across data centers, public clouds, and private clouds. This operator supports the installation and upgrade of ClusterManager. + + ## How to Install + Install ClusterManager operator by following instructions in top right button `Install`. After installing the operator, create an instance of the ClusterManager resource to install the ClusterManager. + + The pods of ClusterManager are created in the `open-cluster-management-hub` namespace: + + ``` + $ kubectl get pods -n open-cluster-management-hub + NAME READY STATUS RESTARTS AGE + cluster-manager-registration-controller-566b5cd967-65s8g 1/1 Running 0 68s + cluster-manager-registration-controller-566b5cd967-98hbb 1/1 Running 0 68s + cluster-manager-registration-controller-566b5cd967-tdl9f 1/1 Running 0 68s + cluster-manager-registration-webhook-5649df75cf-69l6j 1/1 Running 0 68s + cluster-manager-registration-webhook-5649df75cf-plmrk 1/1 Running 0 68s + cluster-manager-registration-webhook-5649df75cf-s7tjs 1/1 Running 0 68s + cluster-manager-work-webhook-776d978d64-cwljs 1/1 Running 0 68s + cluster-manager-work-webhook-776d978d64-m62wd 1/1 Running 0 68s + cluster-manager-work-webhook-776d978d64-prswn 1/1 Running 0 68s + ``` + + There is a ManagedCluster created in the Hub cluster when the managed cluster is registered to the Hub cluster. + + ``` + $ kubectl get managedclusters.cluster.open-cluster-management.io + NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE + cluster-dev true True True 7h20m + cluster-test false https://127.0.0.1:8443 7h25m + ``` + icon: + - base64data: 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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + - namespaces + - serviceaccounts + - services + - secrets + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + - apiGroups: + - "" + - events.k8s.io + resources: + - events + verbs: + - create + - patch + - update + - apiGroups: + - apps + resources: + - deployments + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + - rolebindings + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - roles + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - escalate + - bind + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - apiregistration.k8s.io + resources: + - apiservices + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - admissionregistration.k8s.io + resources: + - validatingwebhookconfigurations + - mutatingwebhookconfigurations + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - operator.open-cluster-management.io + resources: + - clustermanagers + verbs: + - get + - list + - watch + - update + - delete + - apiGroups: + - operator.open-cluster-management.io + resources: + - clustermanagers/status + verbs: + - update + - patch + serviceAccountName: cluster-manager + deployments: + - name: cluster-manager + spec: + replicas: 3 + selector: + matchLabels: + app: cluster-manager + strategy: {} + template: + metadata: + labels: + app: cluster-manager + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cluster-manager + topologyKey: failure-domain.beta.kubernetes.io/zone + weight: 70 + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - cluster-manager + topologyKey: kubernetes.io/hostname + weight: 30 + containers: + - args: + - /registration-operator + - hub + image: quay.io/open-cluster-management/registration-operator:0.0.2 + livenessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 2 + periodSeconds: 10 + name: registration-operator + readinessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 2 + resources: + requests: + cpu: 100m + memory: 128Mi + serviceAccountName: cluster-manager + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - open-cluster-management + - ClusterManager + links: + - name: Registration Operator + url: https://github.com/open-cluster-management/registration-operator + maintainers: + - email: pmorie@redhat.com + name: Paul Morie + - email: deads@redhat.com + name: David Eads + - email: jqiu@redhat.com + name: Jian Qiu + maturity: alpha + provider: + name: Red Hat, Inc. + replaces: cluster-manager.v0.1.0 + selector: + matchLabels: + app: cluster-manager + version: 0.2.0 diff --git a/deploy/cluster-manager/olm-catalog/cluster-manager/cluster-manger.package.yaml b/deploy/cluster-manager/olm-catalog/cluster-manager/cluster-manager.package.yaml similarity index 66% rename from deploy/cluster-manager/olm-catalog/cluster-manager/cluster-manger.package.yaml rename to deploy/cluster-manager/olm-catalog/cluster-manager/cluster-manager.package.yaml index ec1898608..b2dab00af 100644 --- a/deploy/cluster-manager/olm-catalog/cluster-manager/cluster-manger.package.yaml +++ b/deploy/cluster-manager/olm-catalog/cluster-manager/cluster-manager.package.yaml @@ -1,5 +1,5 @@ channels: - name: stable - currentCSV: cluster-manager.v0.2.0 + currentCSV: cluster-manager.v0.3.0 defaultChannel: stable packageName: cluster-manager diff --git a/deploy/cluster-manager/olm-catalog/cluster-manager/manifests/cluster-manager.clusterserviceversion.yaml b/deploy/cluster-manager/olm-catalog/cluster-manager/manifests/cluster-manager.clusterserviceversion.yaml index dd25d3c03..ff817469c 100644 --- a/deploy/cluster-manager/olm-catalog/cluster-manager/manifests/cluster-manager.clusterserviceversion.yaml +++ b/deploy/cluster-manager/olm-catalog/cluster-manager/manifests/cluster-manager.clusterserviceversion.yaml @@ -19,19 +19,20 @@ metadata: capabilities: Basic Install categories: Integration & Delivery,OpenShift Optional certified: "false" - containerImage: quay.io/repository/open-cluster-management/registration-operator:0.0.2 - createdAt: "2020-07-30T20:00:31Z" + containerImage: quay.io/repository/open-cluster-management/registration-operator:latest + createdAt: "2020-10-15T20:00:31Z" description: Manages the installation and upgrade of the ClusterManager. + operators.operatorframework.io/builder: operator-sdk-v1.0.1 + operators.operatorframework.io/project_layout: go repository: https://github.com/open-cluster-management/registration-operator support: Red Hat, Inc. - name: cluster-manager.v0.2.0 + name: cluster-manager.v0.3.0 namespace: placeholder spec: apiservicedefinitions: {} customresourcedefinitions: owned: - - description: ClusterManager defines the configurations of controllers running - hub that govern registration and work distribution for attached Klusterlets + - description: ClusterManager defines the configurations of controllers running hub that govern registration and work distribution for attached Klusterlets displayName: ClusterManager kind: ClusterManager name: clustermanagers.operator.open-cluster-management.io @@ -255,6 +256,9 @@ spec: cpu: 100m memory: 128Mi serviceAccountName: cluster-manager + permissions: + - rules: [] + serviceAccountName: cluster-manager strategy: deployment installModes: - supported: true @@ -281,8 +285,8 @@ spec: maturity: alpha provider: name: Red Hat, Inc. - replaces: cluster-manager.v0.1.0 + replaces: cluster-manager.v0.2.0 selector: matchLabels: app: cluster-manager - version: 0.2.0 + version: 0.3.0 diff --git a/deploy/cluster-manager/olm-catalog/cluster-manager/manifests/operator.open-cluster-management.io_clustermanagers.yaml b/deploy/cluster-manager/olm-catalog/cluster-manager/manifests/operator.open-cluster-management.io_clustermanagers.yaml new file mode 100644 index 000000000..ffede8529 --- /dev/null +++ b/deploy/cluster-manager/olm-catalog/cluster-manager/manifests/operator.open-cluster-management.io_clustermanagers.yaml @@ -0,0 +1,150 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + name: clustermanagers.operator.open-cluster-management.io +spec: + group: operator.open-cluster-management.io + names: + kind: ClusterManager + listKind: ClusterManagerList + plural: clustermanagers + singular: clustermanager + preserveUnknownFields: false + scope: Cluster + subresources: + status: {} + validation: + openAPIV3Schema: + description: ClusterManager configures the controllers on the hub that govern registration and work distribution for attached Klusterlets. ClusterManager will be only deployed in open-cluster-management-hub namespace. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec represents a desired deployment configuration of controllers that govern registration and work distribution for attached Klusterlets. + properties: + registrationImagePullSpec: + description: RegistrationImagePullSpec represents the desired image of registration controller/webhook installed on hub. + type: string + workImagePullSpec: + description: WorkImagePullSpec represents the desired image configuration of work controller/webhook installed on hub. + type: string + type: object + status: + description: Status represents the current status of controllers that govern the lifecycle of managed clusters. + properties: + conditions: + description: 'Conditions contain the different condition statuses for this ClusterManager. Valid condition types are: Applied: components in hub are applied. Available: components in hub are available and ready to serve. Progressing: components in hub are in a transitioning state. Degraded: components in hub do not match the desired configuration and only provide degraded service.' + items: + description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + generations: + description: Generations are used to determine when an item needs to be reconciled or has changed in a way that needs a reaction. + items: + description: GenerationStatus keeps track of the generation for a given resource so that decisions about forced updates can be made. the definition matches the GenerationStatus defined in github.com/openshift/api/v1 + properties: + group: + description: group is the group of the thing you're tracking + type: string + lastGeneration: + description: lastGeneration is the last generation of the thing that controller applies + format: int64 + type: integer + name: + description: name is the name of the thing you're tracking + type: string + namespace: + description: namespace is where the thing you're tracking is + type: string + resource: + description: resource is the resource type of the thing you're tracking + type: string + version: + description: version is the version of the thing you're tracking + type: string + type: object + type: array + observedGeneration: + description: ObservedGeneration is the last generation change you've dealt with + format: int64 + type: integer + relatedResources: + description: RelatedResources are used to track the resources that are related to this ClusterManager + items: + description: RelatedResourceMeta represents the resource that is managed by an operator + properties: + group: + description: group is the group of the thing you're tracking + type: string + name: + description: name is the name of the thing you're tracking + type: string + namespace: + description: namespace is where the thing you're tracking is + type: string + resource: + description: resource is the resource type of the thing you're tracking + type: string + version: + description: version is the version of the thing you're tracking + type: string + type: object + type: array + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/deploy/klusterlet/PROJECT b/deploy/klusterlet/PROJECT new file mode 100644 index 000000000..d6c3dc192 --- /dev/null +++ b/deploy/klusterlet/PROJECT @@ -0,0 +1,2 @@ +projectName: klusterlet +version: 2 diff --git a/deploy/klusterlet/crds/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml b/deploy/klusterlet/config/crds/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml similarity index 100% rename from deploy/klusterlet/crds/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml rename to deploy/klusterlet/config/crds/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml diff --git a/deploy/klusterlet/config/crds/kustomization.yaml b/deploy/klusterlet/config/crds/kustomization.yaml new file mode 100644 index 000000000..dbcb55c93 --- /dev/null +++ b/deploy/klusterlet/config/crds/kustomization.yaml @@ -0,0 +1,2 @@ +resources: + - 0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml diff --git a/deploy/klusterlet/config/manifests/bases/klusterlet.clusterserviceversion.yaml b/deploy/klusterlet/config/manifests/bases/klusterlet.clusterserviceversion.yaml new file mode 100644 index 000000000..1f7ddf2f0 --- /dev/null +++ b/deploy/klusterlet/config/manifests/bases/klusterlet.clusterserviceversion.yaml @@ -0,0 +1,99 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: "[]" + capabilities: Basic Install + categories: Integration & Delivery,OpenShift Optional + certified: "false" + containerImage: quay.io/repository/open-cluster-management/registration-operator:latest + createdAt: "2020-10-15T20:00:31Z" + description: Manages the installation and upgrade of the Klusterlet. + repository: https://github.com/open-cluster-management/registration-operator + support: Red Hat, Inc. + name: klusterlet.v0.2.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: Klusterlet defines the configurations of agents running on the + managed cluster + displayName: Klusterlet + kind: Klusterlet + name: klusterlets.operator.open-cluster-management.io + version: v1 + description: | + The Klusterlet proivdes the registation to the Hub clusters as a managed cluster. This operator supports the installation and upgrade of Klusterlet. + + ## Prerequisites + You need a Hub cluster which has installed ClusterManager. + + ## How to Install + * Install Klusterlet operator by following instructions in top right button `Install`. + * Optional: Create an agent namespace used to deploy Klusterlet. The default namespace is `open-cluster-management-agent`. + * Create a secret `bootstrap-hub-kubeconfig` with the kubeconfig file of hub cluster in the agent namespace. + + ``` + $ kubectl create secret generic bootstrap-hub-kubeconfig --from-file=kubeconfig= -n + ``` + + * Create an instance of the Klusterlet resource to install the Klusterlet. + + The pods of Klusterlet are created in agent namespace. + + ``` + $ kubectl get pods -n open-cluster-management-agent + NAME READY STATUS RESTARTS AGE + klusterlet-registration-agent-7fdd5b549b-4q88s 1/1 Running 0 27s + klusterlet-registration-agent-7fdd5b549b-ccdgn 1/1 Running 0 27s + klusterlet-registration-agent-7fdd5b549b-djhl9 1/1 Running 0 27s + klusterlet-work-agent-cbbb7f945-g7m45 1/1 Running 0 27s + klusterlet-work-agent-cbbb7f945-mxdbg 1/1 Running 1 27s + klusterlet-work-agent-cbbb7f945-pnjxk 1/1 Running 0 27s + ``` + + There is a ManagedCluster created in the Hub cluster. + + ``` + $ kubectl get managedclusters.cluster.open-cluster-management.io + NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE + cluster1 false 27s + ``` + displayName: Klusterlet + icon: + - base64data: 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 + mediatype: image/png + install: + spec: null + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - open-cluster-management + - Klusterlet + links: + - name: Registration Operator + url: https://github.com/open-cluster-management/registration-operator + maintainers: + - email: pmorie@redhat.com + name: Paul Morie + - email: deads@redhat.com + name: David Eads + - email: jqiu@redhat.com + name: Jian Qiu + maturity: alpha + provider: + name: Red Hat, Inc. + replaces: klusterlet.v0.1.0 + selector: + matchLabels: + app: klusterlet + version: 0.2.0 diff --git a/deploy/klusterlet/config/manifests/kustomization.yaml b/deploy/klusterlet/config/manifests/kustomization.yaml new file mode 100644 index 000000000..7670f39ac --- /dev/null +++ b/deploy/klusterlet/config/manifests/kustomization.yaml @@ -0,0 +1,4 @@ +bases: + - ../crds + - ../rbac + - ../operator diff --git a/deploy/klusterlet/config/operator/kustomization.yaml b/deploy/klusterlet/config/operator/kustomization.yaml new file mode 100644 index 000000000..0db267713 --- /dev/null +++ b/deploy/klusterlet/config/operator/kustomization.yaml @@ -0,0 +1,4 @@ +resources: + - namespace.yaml + - service_account.yaml + - operator.yaml diff --git a/deploy/klusterlet/config/operator/namespace.yaml b/deploy/klusterlet/config/operator/namespace.yaml new file mode 100644 index 000000000..acde60f14 --- /dev/null +++ b/deploy/klusterlet/config/operator/namespace.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: open-cluster-management diff --git a/deploy/klusterlet/operator.yaml b/deploy/klusterlet/config/operator/operator.yaml similarity index 100% rename from deploy/klusterlet/operator.yaml rename to deploy/klusterlet/config/operator/operator.yaml diff --git a/deploy/klusterlet/service_account.yaml b/deploy/klusterlet/config/operator/service_account.yaml similarity index 100% rename from deploy/klusterlet/service_account.yaml rename to deploy/klusterlet/config/operator/service_account.yaml diff --git a/deploy/klusterlet/cluster_role.yaml b/deploy/klusterlet/config/rbac/cluster_role.yaml similarity index 100% rename from deploy/klusterlet/cluster_role.yaml rename to deploy/klusterlet/config/rbac/cluster_role.yaml diff --git a/deploy/klusterlet/cluster_role_binding.yaml b/deploy/klusterlet/config/rbac/cluster_role_binding.yaml similarity index 100% rename from deploy/klusterlet/cluster_role_binding.yaml rename to deploy/klusterlet/config/rbac/cluster_role_binding.yaml diff --git a/deploy/klusterlet/config/rbac/kustomization.yaml b/deploy/klusterlet/config/rbac/kustomization.yaml new file mode 100644 index 000000000..b8d7ee1d8 --- /dev/null +++ b/deploy/klusterlet/config/rbac/kustomization.yaml @@ -0,0 +1,3 @@ +resources: + - cluster_role.yaml + - cluster_role_binding.yaml diff --git a/deploy/klusterlet/config/samples/kustomization.yaml b/deploy/klusterlet/config/samples/kustomization.yaml new file mode 100644 index 000000000..f917c49de --- /dev/null +++ b/deploy/klusterlet/config/samples/kustomization.yaml @@ -0,0 +1,2 @@ +resources: + - operator_open-cluster-management_klusterlets.cr.yaml diff --git a/deploy/klusterlet/crds/operator_open-cluster-management_klusterlets.cr.yaml b/deploy/klusterlet/config/samples/operator_open-cluster-management_klusterlets.cr.yaml similarity index 100% rename from deploy/klusterlet/crds/operator_open-cluster-management_klusterlets.cr.yaml rename to deploy/klusterlet/config/samples/operator_open-cluster-management_klusterlets.cr.yaml diff --git a/deploy/klusterlet/olm-catalog/klusterlet/manifests/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml b/deploy/klusterlet/olm-catalog/klusterlet/0.2.0/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml similarity index 100% rename from deploy/klusterlet/olm-catalog/klusterlet/manifests/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml rename to deploy/klusterlet/olm-catalog/klusterlet/0.2.0/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml diff --git a/deploy/klusterlet/olm-catalog/klusterlet/0.2.0/klusterlet.v0.2.0.clusterserviceversion.yaml b/deploy/klusterlet/olm-catalog/klusterlet/0.2.0/klusterlet.v0.2.0.clusterserviceversion.yaml new file mode 100644 index 000000000..95fb29261 --- /dev/null +++ b/deploy/klusterlet/olm-catalog/klusterlet/0.2.0/klusterlet.v0.2.0.clusterserviceversion.yaml @@ -0,0 +1,289 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "operator.open-cluster-management.io/v1", + "kind": "Klusterlet", + "metadata": { + "name": "klusterlet" + }, + "spec": { + "clusterName": "cluster1", + "externalServerURLs": [ + { + "url": "https://localhost" + } + ], + "namespace": "open-cluster-management-agent", + "registrationImagePullSpec": "quay.io/open-cluster-management/registration:0.0.2", + "workImagePullSpec": "quay.io/open-cluster-management/work:0.0.2" + } + } + ] + capabilities: Basic Install + categories: Integration & Delivery,OpenShift Optional + certified: "false" + containerImage: quay.io/repository/open-cluster-management/registration-operator:0.0.2 + createdAt: "2020-10-13T20:00:31Z" + description: Manages the installation and upgrade of the Klusterlet. + repository: https://github.com/open-cluster-management/registration-operator + support: Red Hat, Inc. + name: klusterlet.v0.2.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: Klusterlet defines the configurations of agents running on the + managed cluster + displayName: Klusterlet + kind: Klusterlet + name: klusterlets.operator.open-cluster-management.io + version: v1 + displayName: Klusterlet + description: | + The Klusterlet proivdes the registation to the Hub clusters as a managed cluster. This operator supports the installation and upgrade of Klusterlet. + + ## Prerequisites + You need a Hub cluster which has installed ClusterManager. + + ## How to Install + * Install Klusterlet operator by following instructions in top right button `Install`. + * Optional: Create an agent namespace used to deploy Klusterlet. The default namespace is `open-cluster-management-agent`. + * Create a secret `bootstrap-hub-kubeconfig` with the kubeconfig file of hub cluster in the agent namespace. + + ``` + $ kubectl create secret generic bootstrap-hub-kubeconfig --from-file=kubeconfig= -n + ``` + + * Create an instance of the Klusterlet resource to install the Klusterlet. + + The pods of Klusterlet are created in agent namespace. + + ``` + $ kubectl get pods -n open-cluster-management-agent + NAME READY STATUS RESTARTS AGE + klusterlet-registration-agent-7fdd5b549b-4q88s 1/1 Running 0 27s + klusterlet-registration-agent-7fdd5b549b-ccdgn 1/1 Running 0 27s + klusterlet-registration-agent-7fdd5b549b-djhl9 1/1 Running 0 27s + klusterlet-work-agent-cbbb7f945-g7m45 1/1 Running 0 27s + klusterlet-work-agent-cbbb7f945-mxdbg 1/1 Running 1 27s + klusterlet-work-agent-cbbb7f945-pnjxk 1/1 Running 0 27s + ``` + + There is a ManagedCluster created in the Hub cluster. + + ``` + $ kubectl get managedclusters.cluster.open-cluster-management.io + NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE + cluster1 false 27s + ``` + icon: + - base64data: iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAABxVBMVEX////z//+JzuYRKUP/9/X/+P9Ipcn39/js///c8PccNE8JHjWFyd3w8vcmN0r3/vKQ0eMIMlHV5/Hz+P4TMlGR1O6Fx+Xr9f+Qyt4vQliBwdr+/e2Yzubq/PX/8O1zgZJDVGgfPFp4x+LS7v/j/v4DKEzg9P7m7fr/5ewTOlvu7e1NYHg8TF5Vn8H/6flmdolCnr1OW22OwtclRGPT5/spWHnf6Pf/5uDAy9odTW/W9f9YZ3rJ6v7H3uvR2uZaqMnA4/tgb4IRQmSHvN+cqrdbi6qGl6+UoKw3ZoT6Bx+1wtOwuckxS2ec0fLi5+7y9erI09+lsb5/jJ7+1dTBCBrrAw6n1OrZ/v5rvNhuocFThKErNVj/2+Xz8OG4y96ktcqOo7pCcI7Y7Op6q8mGlKPQCiW91uqkvNNcs9GZrcXkCy3aBRO02/Lk9ujz5uN7stFAlbdll7VNepjg//GFttBogJvMHjmh2/d2jaX+xM5Sa4jJ1Oyhydtxqcr6hZWuDSLP7t/+s79Nj7D/n6o5gKG6FzLl6uK6MDrdiZbBVGDudIDcSF3W/OzMbnnbZ23LQFKaFyYoaY6jNETltq99MkG1f4X9VWx+gaqSAAAkBElEQVR42tya228SQRTG5+zOZElhWVZYUJD1Eo1bNTVqWjQmfQAbReMtQNQEY0zkBVNMbULDS9E0Db3Y0lj17/Wb3S7Q1oQ+1LDrtyzD8jS/fuecmTmU/WsJwQjvEEVIPoVV4CAJgDECkvCCgCMCkv8AxAPA8B+AEB2EWJhBBEhwQe4YXgkxOoTZEQjvoWYYggyXlPAGl8QgV17isxBLFt5InniLG4t5FlYRSY4r+Twv8ELuXY6FVeSS5COGbTuVgm2zsAoY8ubcWe31ehsFFlaRm++c1+u9dre9t8bCKwFx29labzar7d8srCJigvOcXdku18rlapWN0YzDBROuglWufZBCv1ou16o9Nkacc0akMU8B2p15ZxEjZ6+2G81qd4uN0aJhYLVZjgRuD+Cdb8nIObvd9b2dylgQrDXcyH8nCtgm0wUhihjCqX/r2GPLb25/c3Onwl0MChyIe0rkwraRAGO006822lsF292kBekg5oNccT/oYyO/3yiXm9soXe5emQIGIgACEmhsOd2tAqQP7wASiQQORMYWQE5QTfd3G432mm0gBilQzQqDH0QJOIiN17v93e3VgpEHRLCaFQCBTt55+JqzHSe3/PoKBazrYjBgQFy+TqDvLvmyrA0UrEWRezeQ5MjHO1ioC8kQtP6R8OfD2Ymky4zSNO+wH6RmhQSB2ElbdEIQhCFwIIL8nqmc13iQgx6x1Clv4wURw4UQ1+TDQIxrnPtpoGEg9/I+uApYjPt/SsJ0dY30508ePn15LzmXxPN1DgoP44BAuKNUsHLVC3JOGi7SiehRXD0Xj6qqemueyDPjOvNF/hA4ipEpkp7JfFSj8aikmMINljnSrxMbWAIdMUIMXA1MPx6GvL8oCVKqmkqlJEw0evsVSZ9QNOVsj05WQEMSEQwORnMXVPWSGjVNszh73yyaIEmpUw/mM6Rr3lxHOQQwRr7A48Qd4a4f+vztaAoY9z+8VUpZZUUpLcya0pb4I6KkxsAymOsQa1gmxMRDy3BB9LlziCjz/kLWAkU6bZUURVl6PK2aavxjhuhQHowaEJzE99aIa+BQpz8oWUvxBaA7X6Zlqjwk0oYkgyQnqTw3DMZJnzyK8QJTSl5AmZpdKCnpywMQS8mePb9URA27+dK35HgbPpLL2S3eYvrkNxsapvQKftxdQExZaUWJJWLpRDoGTxIrd5buqmr0ASWPdm5Ikxh4FSq/CgXO/dwRbFLiDCAX1dRV+GFlLUuRDIlYQokpViKbPf/2LoLryfAIJEaXRK5plc2fG7Zjc8FdTyYJotGT6JRZLFkyMTxDYjHF18qX6Sn1xuHAITDIrbiwHbG23vtRqXCbaxMHYYQVxFywYIGVTSijspS0UiqqanyefAbfDmA4M0LUy5+q3X6nbttacsInPsHOnJtSi5hyFmYMQWAKvrNKKx9MFYvJIQ4IIDPOTGcDLfjG+mqHH4BMDkUIDak+/dh6s6JkkRxK+rzvxuW0ZaWflT6bavRCZtQRKdZyRH3jx88y2lTVvZ2OAxBogiCMxadS5lvF1VnlqFDGZhFb/gz54GfcRd7Z7Dab+FXkE1jaaF8nCS23Y71eg5NXHXPcO94bg2VV6hRRCBtFU5ohS+7fQB4DJOOVLWPkX5t4ZbPbaNZqtXLtU7W/0SKdwHIchJG7M+MSQUsCRfO30FywlkQ7HQnC5qT4h3dz8WriiMI4407Yl7tpdrFLyINgMMGEgkgKGAmFFtHDS5EWW5BHtQdqq1gfWERUOBy1D9tzah9/b7+74yR6CCXAnt7gGjQu89t7585374w0ZMyQD6uB3McqU5ntcjVMJJPTO78+J4/QJJlWE3q1E3QxOU6VcwsIFXNJvwXIUSdBTgKjisWPXYB67BMAHAiyg8A5b9t+9gXc8ejZdFJlCV0LdYSqitIQ/a6+ZCzLniw2p6Lt+c6rGXyDcifA0JIgH5z8oCqKBJG9XhHcKqvLrfb29v6DVu4v0/NbCZjGOjp2SSA5E1UooexYXpFmd03piUSQycGVIIRRNbQildDiFRA3wfj86uNXL36eXr3z4E7OouZ6aK+2AEXVQDOmIxmuLRBxqT7mBOgQRgKeZDsUVvXJjoUky8ofFyC+9L2TYNM//bXdxrcSVluHigwQqo4ByzGvGY44deqUAhKYoZhdC1qAaw+zobSe7kaopN+IabP3JjulTReSEbFxve3v6VzOzXV0dCAdaYm9QFTmXaQSVOneGFlZWVoz8FYx862BgcDlnXhOs1gNSaTsAmmaaIoY5rtii9PIZOJR25I5C9ZBFmKt13ZxyCSRHUNzpmV8ZTldTKfTemEpSk5Zo7sEs1vNvCt2i3JuIg6JsosCZBOzmCKod6ucpVHVUKjD0q/pggPSS6sCInsCNga+cdvRdZ1+afrCCPVqpoQeODoJR000hNi6F4/TsMvmQ50gOXzONGyZtGTvWVgI1qG2Xmu1KK5CvkuqgsAh3lXTNFKD13T9xo0bBFPw9HVlTmnPCg6O15FAwjnmjiotDeM3ZxqPvw8CMQ+QC2gQDXnlKSJA/FfIBwklWlvdkOq64lj5Xn4fsI2ostJaurG1BQ7ySkFzNsw5cxEgFT8fScdn3S6lwfj6bLypyQeowMBH906b42afjGL2zpVAxOA1l2QHx/s9+zRsCul2vViCR8jAojmFzKhffsLkPtERQGL8MmOjhtlgzMbjjZSDheaCd5riPzZd6D4Fh7jvbxuUQ0EkY87+Q/cKNj+jmIXi1utiUXA4mCiFTF6xbY/+rSrvfxQQBPA6Fe2zDwECveVXJU3+12zEbDGiPXKUldYPHj8ucAbNFC4w9tgT5GH6q7k5JV/StrbS6UKaIDIlPeMUgaeUpEeOCDLvjyBPKf7SzeMkVHzRhf7WxN1LkQhS5ELliZVJQkSCZaM1waBrBQJhVQEJ+4yGMpcv6FsPkHqLGfjDIY7iiGLS7UkTB3JYiFlZU4GNfxWXmeuzHyduQr+fVrrXGZsPy6cbO+w5VOqJ697kZFrX8QUrZfT0tSXFVkZJgNZJjxy5ZTplE0nkUtNnxz4jvTLx8P65htPdSJBPSOiqb6MdIIcjsQFSyjiW5KBZUlxegkeukD8D6+ar7qhttigNaGFfuj87e//rj0/7fXmAnPcs/L2M92obEnTdDySqGNGio3u6NM1xWp01gDhijhw1tHi5A+oMmZgQEaVs4CIZYXZWHhk4Dmgy353HjeARvWyO7mRa25G1CERm3yOQSBlIu1VOsxIlAsPAJQpJVyrkTcU2ryJDSuZDkrBhPPs1rVDwISZ13RsA1Qp+jr+O8KOHFmcy3Vsexjvc2WUrtGllpy5mWMZzOhXTMEey9LPCh+bg8DdJrWUt7a8isOyAphWws0Qtcld85mihVeaYpCwMN3s9PdmenkmGdxqdsW62jTll0WOc00wPHeb+nBJSJ6qFjWWAyKmeKY3AIV09QfWQJAks5zJLdDikTKdLM2XmMcbDMS5BDkFCLjHMjUFdWnp5xEQIDzMLuiEAHc/2+fMEwzxF7upj4ZfoEx8YRHQpVM4yKwayYPficrGY7k+n+291Ky2msRZYYbX3bbj/CruTjELZ7kuwnHqI0KLcTbWCRnKEbpQfWdlcWhs3ke2NfIYFfPZXysBdGzocwfZkDiNIMSHuDmiWWCM8bykKj0QpmuAYknbjijleKMv+wGGkySSlIg0gdyLntDuHiQKwc7iFjUaRyFHs0lV0Hkw79eR/6hUDhtDYJGumoGj3MPsPswEDp47BH4YyMJYqt7WUoW9EwvqfLKSCRAOJYRh5jx1m11h1rYtRE4GkWXX8ylRzV3t719A3nkcODtx4uWiS4qmy7cDDGkvnW/xVOHHgG2O31eo0aU4seywn6n2qpbJ1+AZfPGgMCSBRJEgSY2G6lt5QYEP84IUbf9msYI633NaQwZIhVZ6YUus47NAkYk/i4LsTanZIwWguaIzleCwWAzvDSDBOMR7ZYZHvGeUJvsq1jDakYCFK9dVBiVzmQYcS80nwe615GYmnmVa0JRp/byyp+v05zlWfEh+QKJQg8D2Fjary1YzWCXfMzfX5qTscHIjQH3JC1H4UjwY+RCvBEkBiPEa3wT2SwHGFmLGISSpZWcFwLW9Cq/mJlgEkHCxIhUireXmxLOblKYmOUUjRPxXinpH1XBntG+jx2FtTBQhjk4CPKlQHiMwNBwZqvMJUq4IJkU96kEUNm8Jf9n7xJnOri3Q/Wf6WzmAirixmaewiyhm7iwlmiwe5LrwN4zAXh1YPIF8g7adoZR5y355DAYk1ct4AnCGLyu61Ww5WCBmMo7ZhogbE595GGwsUhIMD4cpYDSCsjJKDbnIvKgaecE/WXwqc4S6IDUFBFyMCThxWW8wyclU2M4qC0446nsvw4PxaVg0QxC+9YzwcFjtMtRk4cGEqW1dobFRzFZZS0EsKWUNL9/j4OJbMyOlIhATmFJzlsWGDfDVAeUCoHTUwDuHxed77uJdffqAlaq0vwqCQXQSKesjvBXjDxFcUGzfLg77dPnvh0qeRCLRttMuhLimsvY8mzWVRXwZpOkvMx3p/evP4euzOa425tfmjcnW88xRHG0uGgpeRWllYHuzvJ4rbMzMz8cav7n8aMeApe7iTPtcNDkyZcMAcMHZD5cmd5y8ebV/nLFGz+gxLImSpFBRHg2nDMWub/VTsEcRmY2Pj2cb4DPaz750zDEAQ6fgg8xMvcYSDBXGt1bbfHn333fefP7u+qtYuUmSBYk0yfaMFzXvbzC/0F+EKgjh7FhCNjbii5RqPz542qP4z7WXNtcAh3BmwJUN/vnlEx0fe/Bla7QgdfP3Jalqe9mVHnHT/DDCwGwHzr9jiPt6EDaKJu+dophgLzFNVWVYGbqtt279+jv9Ct9M7j6NKB5IEMIgsnZqQxlXHKYHEd0YjAGDHYDgqhSOFd499Sm1Lu4eFQcFFAR2sX3JMTSa3X3z+fDsZe3AHIAdRAXhxbqUM7PavO45T2Gx8eOKDyo4jGvkngXP85IkTT+9GGkyc88rOX1ZFeSYsQK3FEpeT07+/2sGxi9cP3BpDqwISS47ZOL+Q6i9pzsrmZpwgJAodUcVhSBB9+fQj2ns0zUkshLxcMgSYuriqWhbOXY9avkFo831L1Urxjb4Wy7SbttleKvbfxu7psSrmb6meOVP/wylE4PmM6LXzvftXjMy/ovIi2aGSmNunV8X8vRDATEoQWur2jyyhBgBSp11FMlIWC+lBLBq7KaRvznx7pv4PWuSHNUbyXZ6hryqZKjyueLC17LtzOIUAJMj+teo7SAB5Qm2dZr04iGleFaSJjn18WV9/pv6jj0mtlHyPCJAqJDLqOE/2JpNJ8dzEsP677rNUn0RyqPtlknDlnX/vZmTVoQLS1ebZPUBwNPXDT+p/qK//6N7HpxRzBCBUMVbnkFvrfDXZtvP7q192kiFOJLV4BKZKDJUfpGUH+5eY62BOIojCrLfnXQIHQ04kmEAQwWA5ayzBgmZso44lRmOLZcZoNOowYx/biLH3+nv93u5VD6ynPGI0iWH4+N57+97u93Yz1vOl58u1y/do2WgHpARCpmY37h9PV7AbRkB4O0bG5bAy71v39ubk9PT0J5V7TPyQkhQFuIag/xUcwURDk0uoE8+UN9burcLaQaLUkOFsG55FtsIi54rvoe6Xt4uRsijBGS8cejZJ8sjPVRWcpH6hdpI4RPXDf1fpHDOK6BBRXV2GX4EQiOjDOACuTjAISRMdylY3SFqZVIKQ1PP9GMk8P5/kBASwf/VVEZqfWwCsydaiht+6sVY7Qo6VoBP5cPJFtAOHcC7LGgFwZoaPo8JA1r2fnD4MINUCaMtHq4UO6xf2IA+dXrCxBj5I7dECCVF0FHRIa3xAbtgMILwdI2UWkyP6696OTR+env5S5QUBJGocqcDqDhFc8hTq9lU2IYmQa/UGgKyYqeC0y/yBYiZPQOimBf743c2xsZuPVJWABHBEfTIHIFvR/NGi3gsAcxPgpNRiOSxNzXatASDnfvSi7Ln+sh5T7zx+/OjQMgoRhhiJ3pjXU7GlOL3sqm3sR8Eu1DeJFgVKRuQsh5J0BVvfiN52vqXCBCVM5dWTHDC8eFKjDQ7m+BiAoO3burC2sbdfsNEq2OdmZjlA6vRpUXrOUqEH+PkANiEqyGhizsTgnxtvuU3sSmO6lYGuBVsICEAg2EMxkvF7FmwkPSfHWPtoR5hL07h7MxLihv+cEB58hNtZ3npfixhZiKQ1OrTgMgEBiFZq+oyHw6JPwxUHSGuTKORWm8eOXU2qf8oFmocfMtKjoHYaWnBkVT9ihFwrMzfEyNG641kWxchwRcn9SP8hi18OS+V1GGMpokcA+d1Qloyi2ln36Oulr9BV46lkJmEkjnNQUsOA08yBoQX3emWIQIQeZCSRgGOhFfFivY5Z2aX+G0LxesfHy4y+1iO/0on4TNEdWc/GJidfAYisf3QBJMbcdpeAwLVqKBjFSEApVKF4a4hDy6K0UmQ+7Q8X+kEiQm4+R5tcaUs6NbHu5MPJ6Zvvq33++3uZl31t+djQeG8/GlpCkimFgMwOArGwhbrB35Bw1W1CIgbCBI7ya50XAOTSk/cnC1L6agPxldSMNBDFoVov1hFBSCIwy4RmPURIA13iAAGRSOyYkDj0aIGIt1pHjZDi1XcPx96/qHKWNwgI8xjhtuKQtkER7EhaoISyr78pQRIrIdIDQFCixHe6MeL/Sy9TqETLiAxkzBrdefnq+R0SjdrUSyCuoR3BQnIPFYqzHvaSgQqCgVRcmrICOGS3u9vvWnKnQeCgnioqGF7WogkuLKvVKqdY174HItXKJAxXbqBm7J8HRhDqhEOSQqOxwaUQPkZlvJLLmppXx7uuqsOiZMQJPaEFzIuMzmxGvlddmkxoLOcDyC1MycGTej0gCTBCtUkQSDMt1DgAEqyfvFPgiBmRBOiUcN2hHZlkfFPW4sQKZ80Xx1dRkMC9wEgCmRj/LiHOwUfAGrOtD2KwIqb56miSUvACV6XFojQbhzTbi11GgkDYAZwYLtlyuT9YucOOhnEQIVjXB81gpmd8fx/GLJ0MHLHBdSURbTeg7KqPdEI3jiBIEh4KglGXwe1f1BvHhqG+HWVidNLxrPGup3yir2+CM5EX8xEikBzodh0dxBFGcxcHPHO2r+rPZDJyOw5WAoyQNer1YURIskd4Fne8uMwwiImxPzAikERJhsRhA2mHQ7M/ZyGn7e6+Pivj7r87PmUFQ12sIbQaGvS7NiN4/sKXFy8fvPhY9cdI9HIIepNa0+H0Rth/gJ1dRUSUBIw65aewTTXTi+LxE1C++wlRDf7gIY7LXmEYniz6gyxuc+MAYe30UGwrKsf08Xlz5x6tY2d0RZgO+zvkWMoOlvX1h3jhef5o7PDhyQdVLmdPol9HYqJQKduVXBiJJtGabDAJGUD6bNOyqJttZyvWpHFAssFgcC23DQeQa1fvYEfx0suqSdV8J69W2K9tTtKA54c6UIS8Sn7DspprhApyc0xKHjS3O50oPP/45MmTF1Xt2rW8ihOzTtkEieiXKItG0sPNeqNBgR7GYs2sSS9CxlrPTMDgmuwypQhm3fM3Dx68fCOAaCC/gzbIzsQxuVgZnrGshj+8gaFRn23V6zMjJGKM56AW8A4JVGKkL4VuAVYt5AFE1zoHxGTZwQG66GlROl5Z0/SQrKAWd2rKsqwZ9OkIkDjEXUMLUY36A41fubKf48rJgpaHUdnYKYOGaTnkWcm9NMiEj5kmIsK3DM58QLaCdWNY50R3EVJh09vjw4NduZInMzTNNFHcxTpjnCYKAUMp6heWKCAGUIY/zDStOhyqbgHFSCVewQ9W9mR3KORfa20NoNP3axrLv36N8OD2yv7/jYtcqV9EEMfjPTpGmSgxETFkIyMjpHCypVsDa1k2u5Tmg0YHCYkr6iYdcb6slxHndkH0f43jIT+2FAnITgbrOZcDN8IqFWCpSO0Wsu42I2agBsiR3nc9adSQhKWqhmFBN/L5LkOV1oFg18QGzr69CmxUqhnZ2j0DyWS3jQTsiNms5Qf32cKwng0AohwAkjwX6wk35HX5pql1CEgqptJ7bGY3yNvc9jmKUcPYPbA06agBkytHD/RkSU/bxyeQ4HqWxE9Q/dtFTYgEpwqzFbsdYYT6qkEKi+RpZ5RTc26rHLoNFMW7WSbbGqnP3o9/b4ZMQsmtFdpgf+noiDtj/9ugqwAOfYDedhpTY1xz6zRysosn5N1VzpF3Cjh47Ck6yiIUajkmCTA4obZ3g8hYB6AQjlG4EPyKGRKcrwtAKgOQfZqvxNSkK51XiCzBicgZDhDGOoFDFUv6OZFYwYdMmrYKXpxknVaS3cRIbL/T3ZjMEHAWnlLIu05JKXbqt+7U/Sc4jMHRHM28mwZj+Mqdf+OAmAUQnMm5M7e23MfQoLHV9QvIa6LsMuSC6m3c4Mv/arK02IpFIb1rnBQHNjbiAzpoyQgEp27wEgpn3hMutIPG/0g/SzW9PFr/v8mX0UOlLbu8Xr6BlQ59Eg+NOYsNMRkjjEkQftU9fiE7KiTOZbbPNw/PWj/+0m84PtpAIQd4yvRNq4Ejuc0MHM2J7Cti5KJ0Lf8r9BQWlLrmKKsv6lhMAhKIaJGoriyAt/nxYta1qUgjhDuyRvB/AYnU/XhAyPxDkpxr8LwlCrVZg5ix+tfG2+smNdIs0zw1EhYLwaQhJY+R8JshM+6mDZS7Dsh08C+NtxpupT9in3TtyhxeBxZCIyThBRDKUgdtIDx8UqxxUWDSACJSl24/7z/E0xfSoPThwTE1Ym4g+d9BnYlVTg0DiVH67fYzwr3nETeEmYgT0nR2sZSDxKmnI4WUwiNES0ro2cHHwLf2rrA3iSCIuqWGg/NQDvA4glKilaAkjSIGVBoNrTalqPWDhprUVkiNiYa0wdho+sUYf7fv7Xq34l01ZjUxxilWooS9d7MzOzs78w7mkb4v5tE97USAyEoACUR6rdOzFicA47RaJN0MYv6NC/P43j8jIsJJF/4ol4RlgIm2c6cZCp6MIBFyHQncr9CFB3r5TsrOkUcJyHvMND3ob14sAkZ1tsg7bGCRUlPLwrkVjv8W8S7NWgORfZ0ix12Te+9KU7KqVNrcg/Oidf22nmi5dYb6S31+r2qUo/A340mV6jYBgmHp7KVVe2L58d1Gmr5y4fG6J2q5WiWDK1wSGkgYmiQvI0xHCL/EEKy5iIUmbTe2nRxVEMx9qgvqUcGa9xwftBeWif4DxsE3cwfT9jzHgyPhRcybuywHKvDGfoYo8nnJUd6ouMg04G1DCE1eESBhkO7C8fo2Pl1Vnd3gDBh/66P1VONLWJIcoVG7vsNR5EAYJtEYL0vdQMUGSJJB3ynZRPxEKHWS9719mYa/kttuzbhICW53zX0PReQJI0g8UJH4XPgRvlGFArka2v+ewd5ebRA5JZutptletk4kVKWpQjhNxpl0lQwv+SwFY6iLs+1NKydiDhk4Q240EEpW0+9f7nW724cLcs9+TyAAiJLMXz4hyBInIdtNG9+vhOq0/UoKPcBGQOgN6eppDOQ5bO3ujyaT0Wh1rQ7N887tiFly79CSa6Ltk85mqWul3Iuprnt7ZyORxkXBgrWRaEyE9UhqLd2srx3sH00mR8OtFrrLAOWKy2EMqy9BSvHgKnFkO8MpenNYmlwsTVbrNm6Yv506zczBTCcL0SO34POydi657jkwslnW3s09qZR14UR8uyO92efLG7jqZqI1vDZXLvDYqzcH8ivmkBZIIX7ZAAe3eWidZwqqORr0cGxekvxzhd5g2qozBbd8+jOQ6N0DF3xpVCs20L9KXQf5zJs3b164qHbcq3Jn8vXezlbNJWnMvmSuGJXLc2Uww5E1Cn9Gu9hC29ixGLmth0yv38Msym6xsF0XWfLXJxqKb7lQB73WbARu+fjPu12QGYHAjJQt+ElN6VPXdU2R1osicKsvZteOwFkdjiOLtz92FutcUR2D84552Pk2sgr1rWusSNQD4FWYbHFKV3CHI3GeELTc/LpFICRjU0iYiUzAB89EUULljsQKFAIc5YK8eg2kUNpHgdqzHaNYcd4R3l2sBbvFAYCc/Y5usrRVhX/9kJNnG7MRgXUfQBZSsBC8AEMheXqI2XjVE7OfVTMLPi6x2BoOQFrNWqJwHJTYzm1hFvsPoHmTBHsfCmlOyyWtcakbWdX75ACT/pbsygkMXs+TdP7Q1Tik3HzJuSVEjJOXtUUtMFvii3WjA8fhsGuY3feFAeEkErGkWwe54QRAChHe4mkdSLyc0ohGItC1i3Ore8BB+q8XAZDbr7k86gvSBBAsW6suDmHemqKTJo/CLyAbDKGShiMMuscc4cNCptfOnCnF9bWU1ySZU2C5mqyTQNI7KVcaiBsCuZMmkFgWIUxFEAtrFGREp96V8PjUFSaNievUOB4JUSiFCtEGX5zbR83VktxqUDRbnMcE6iGBvDj3ItTIhSdoJotqhL/68LwHsAjQ2JYChZzlFCaYs3OrsrXMYD0UDHdXOXPxpQUNgkIkRegcHDUhBOW/SLPK/UXKtXD5y6lQI89hIhkR1bwQnMEjln2cChWCn8AmSyOMc8s1YZfNQCPTCGW8BqTo1gmAEpJsyI26D4UoclLFGevefotP34oJNoS4ypk1IwDCv1jPDUAdfN2mSXaaIZYsrYxFojix9eTVRuKScW+cEl039Qg6oa1YFk0kcz+uoEU0EALNfjMVokcm0b7JUiLgfOqDHyBZhWNsR8rCk4JkA4nGtutaWNgtt3sJf9wlslXAyUWRiAwWw7jvD5oe1tiSbbKM2HBa5WN449nusq+AKBhCJxBzbfTyYVpfRB91qnsRvLcX3eekRRzXhBNNNIlEPJAzsjUIjngXyhwb8cYDSDBVY6S8mifdeiQIFDXy7NmZu3vUB2fWxdShzQqU2oMorQp+4H3jgKheLVON0Ai5H+zFsq0TBu4UIscb0MhsMpQrnLuUQXS8sXN9D6Sxl27y6J10FZ5w4qjKEYV1Yv0Jb6GyEf+VCSuHD2M/Uky/cUjmOvmEn4tohEAU1yZ2w+8PDw+XNuSm6WrXEjolIjSU5F3MrV6sSqAR+H26+W0DICeu8gk9/L5ibA9xr15PbIjANoSGwqxLF1ePfb0WZiQdEUce71SwuZ9EnDvvIH6ww1pMpCvXTbLxbUze1rVyMWDElj5Rr437oAd5HJugptzk+q5h+J+d+A8i97COzx0UGZrqKJutQYy9pJev2s8tI8KXBS65RdYhl7hGhTDOQnqDXdhvW4hjTWz7ioKSZsmDcI5v7fBYxn3qDC5bb+CKiE4K9I29crNq+x+EwXqolujd6bsSblZ0gd9nVbh3rEZ4OOv1H1ceVyorbnyRTFBDKN4y2JqWsZHSodA70nbgvg22yAxnEMZT517DriLa0uH1N3QUow4SJZvWsTy5wnEkV5jnqfznsaPgvz9kbD+7W3xSYkOvHqjA+ASRVprVHgY44H6Y3+3sDwbQiSrXZ1v0KYw3N9zIp6GQ43kNk3g5Yfoq+RBoj8uRe+KxnZE7n2tFZeUYiDiAatpS+7ec2YOsrAr2uh3sedRC+9WxIzG032KSs6380Hx8i+pDXQsLiTGi0Bi9GwvMwB6AmKfAkchRTz6CwmCEtQqlHjkj5hpZu898VGerN+h9o/HydLWTUKkE5wfJC4jikWei5fxxDbJ44XZs+jCT7MH0mhoDSIAD82qN96tvlNci9S1Usk2aLyQGvjVz3qYsN1U18SPuBc0CLDHNf6c7ESxB9I+k3AIUjBP2OwwGR2tINpKK2eRgIWzj2vbtZh5VsB+PFG18b7ibXczXF+0xFPajDtjTP22QDaclTxMRxsDqsq3ViXqaBp6EiQ4/yIp2jCZIhDXGAt1s5jtrq8Oj0WiIJ23meV5QaZvlyJUyNRTvVQPjVPFMT4wzmQx3W3lUEyB3tixU1ZR5+0i/YduIuiCLLHe1E0wtv3yQ/CFx3C+d95ONA04YxSDySbFZ1g+qcfyxqw3RUOBT+jh5zUPzVWZ0fN/O3LsudFW8ORJaPBdGkOXSVHAekU/znV9hAtvIRPQYOL6AtNVZj+RdvLrpyQoz4jDViJ5ljqyB7sv4H5JBwqFfy5lzVehetCRHgLjrK/fvr2w+cvBeToaIEZsZDIm+c3KcTYzTX+bRKPGZDaMPXmVPAV19IJrElp7JsNpF606WO6r3amhqPGlciqYf76JE/xNEVSjwt/7HqPykhGH+OyQ4GwYWvtM4gyNH8Tc9eP6//Jf/8l/+yz8lXwDq+UD50w1JtwAAAABJRU5ErkJggg== + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - secrets + - configmaps + - serviceaccounts + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + - apiGroups: + - "" + resources: + - namespaces + verbs: + - create + - get + - list + - watch + - delete + - apiGroups: + - "" + - events.k8s.io + resources: + - events + verbs: + - create + - patch + - update + - apiGroups: + - apps + resources: + - deployments + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + - rolebindings + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + - roles + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - escalate + - bind + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - get + - list + - update + - watch + - patch + - delete + - apiGroups: + - operator.open-cluster-management.io + resources: + - klusterlets + verbs: + - get + - list + - watch + - update + - patch + - delete + - apiGroups: + - operator.open-cluster-management.io + resources: + - klusterlets/status + verbs: + - update + - patch + serviceAccountName: klusterlet + deployments: + - name: klusterlet + spec: + replicas: 3 + selector: + matchLabels: + app: klusterlet + strategy: {} + template: + metadata: + labels: + app: klusterlet + spec: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - klusterlet + topologyKey: failure-domain.beta.kubernetes.io/zone + weight: 70 + - podAffinityTerm: + labelSelector: + matchExpressions: + - key: app + operator: In + values: + - klusterlet + topologyKey: kubernetes.io/hostname + weight: 30 + containers: + - args: + - /registration-operator + - klusterlet + image: quay.io/open-cluster-management/registration-operator:0.0.2 + livenessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 2 + periodSeconds: 10 + name: klusterlet + readinessProbe: + httpGet: + path: /healthz + port: 8443 + scheme: HTTPS + initialDelaySeconds: 2 + resources: + requests: + cpu: 100m + memory: 128Mi + serviceAccountName: klusterlet + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - open-cluster-management + - Klusterlet + links: + - name: Registration Operator + url: https://github.com/open-cluster-management/registration-operator + maintainers: + - email: pmorie@redhat.com + name: Paul Morie + - email: deads@redhat.com + name: David Eads + - email: jqiu@redhat.com + name: Jian Qiu + maturity: alpha + provider: + name: Red Hat, Inc. + replaces: klusterlet.v0.1.0 + selector: + matchLabels: + app: klusterlet + version: 0.2.0 diff --git a/deploy/klusterlet/olm-catalog/klusterlet/klusterlet.package.yaml b/deploy/klusterlet/olm-catalog/klusterlet/klusterlet.package.yaml index fe8a09af2..4d926d8bd 100644 --- a/deploy/klusterlet/olm-catalog/klusterlet/klusterlet.package.yaml +++ b/deploy/klusterlet/olm-catalog/klusterlet/klusterlet.package.yaml @@ -1,5 +1,5 @@ channels: -- currentCSV: klusterlet.v0.2.0 +- currentCSV: klusterlet.v0.3.0 name: stable defaultChannel: stable packageName: klusterlet diff --git a/deploy/klusterlet/olm-catalog/klusterlet/manifests/klusterlet.clusterserviceversion.yaml b/deploy/klusterlet/olm-catalog/klusterlet/manifests/klusterlet.clusterserviceversion.yaml index 6895ae45b..7088ab029 100644 --- a/deploy/klusterlet/olm-catalog/klusterlet/manifests/klusterlet.clusterserviceversion.yaml +++ b/deploy/klusterlet/olm-catalog/klusterlet/manifests/klusterlet.clusterserviceversion.yaml @@ -26,19 +26,20 @@ metadata: capabilities: Basic Install categories: Integration & Delivery,OpenShift Optional certified: "false" - containerImage: quay.io/repository/open-cluster-management/registration-operator:0.0.2 - createdAt: "2020-07-30T20:00:31Z" + containerImage: quay.io/repository/open-cluster-management/registration-operator:latest + createdAt: "2020-10-15T20:00:31Z" description: Manages the installation and upgrade of the Klusterlet. + operators.operatorframework.io/builder: operator-sdk-v1.0.1 + operators.operatorframework.io/project_layout: go repository: https://github.com/open-cluster-management/registration-operator support: Red Hat, Inc. - name: klusterlet.v0.2.0 + name: klusterlet.v0.3.0 namespace: placeholder spec: apiservicedefinitions: {} customresourcedefinitions: owned: - - description: Klusterlet defines the configurations of agents running on the - managed cluster + - description: Klusterlet defines the configurations of agents running on the managed cluster displayName: Klusterlet kind: Klusterlet name: klusterlets.operator.open-cluster-management.io @@ -256,6 +257,9 @@ spec: cpu: 100m memory: 128Mi serviceAccountName: klusterlet + permissions: + - rules: [] + serviceAccountName: klusterlet strategy: deployment installModes: - supported: true @@ -286,4 +290,4 @@ spec: selector: matchLabels: app: klusterlet - version: 0.2.0 + version: 0.3.0 diff --git a/deploy/klusterlet/olm-catalog/klusterlet/manifests/operator.open-cluster-management.io_klusterlets.yaml b/deploy/klusterlet/olm-catalog/klusterlet/manifests/operator.open-cluster-management.io_klusterlets.yaml new file mode 100644 index 000000000..e15bb790e --- /dev/null +++ b/deploy/klusterlet/olm-catalog/klusterlet/manifests/operator.open-cluster-management.io_klusterlets.yaml @@ -0,0 +1,170 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + name: klusterlets.operator.open-cluster-management.io +spec: + group: operator.open-cluster-management.io + names: + kind: Klusterlet + listKind: KlusterletList + plural: klusterlets + singular: klusterlet + preserveUnknownFields: false + scope: Cluster + subresources: + status: {} + validation: + openAPIV3Schema: + description: Klusterlet represents controllers on the managed cluster. When configured, the Klusterlet requires a secret named of bootstrap-hub-kubeconfig in the same namespace to allow API requests to the hub for the registration protocol. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec represents the desired deployment configuration of Klusterlet agent. + properties: + clusterName: + description: ClusterName is the name of the managed cluster to be created on hub. The Klusterlet agent generates a random name if it is not set, or discovers the appropriate cluster name on openshift. + type: string + externalServerURLs: + description: ExternalServerURLs represents the a list of apiserver urls and ca bundles that is accessible externally If it is set empty, managed cluster has no externally accessible url that hub cluster can visit. + items: + description: ServerURL represents the apiserver url and ca bundle that is accessible externally + properties: + caBundle: + description: CABundle is the ca bundle to connect to apiserver of the managed cluster. System certs are used if it is not set. + format: byte + type: string + url: + description: URL is the url of apiserver endpoint of the managed cluster. + type: string + type: object + type: array + namespace: + description: Namespace is the namespace to deploy the agent. The namespace must have a prefix of "open-cluster-management-", and if it is not set, the namespace of "open-cluster-management-agent" is used to deploy agent. + type: string + registrationImagePullSpec: + description: RegistrationImagePullSpec represents the desired image configuration of registration agent. + type: string + workImagePullSpec: + description: WorkImagePullSpec represents the desired image configuration of work agent. + type: string + type: object + status: + description: Status represents the current status of Klusterlet agent. + properties: + conditions: + description: 'Conditions contain the different condition statuses for this Klusterlet. Valid condition types are: Applied: components have been applied in the managed cluster. Available: components in the managed cluster are available and ready to serve. Progressing: components in the managed cluster are in a transitioning state. Degraded: components in the managed cluster do not match the desired configuration and only provide degraded service.' + items: + description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + properties: + lastTransitionTime: + description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: message is a human readable message indicating details about the transition. This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + generations: + description: Generations are used to determine when an item needs to be reconciled or has changed in a way that needs a reaction. + items: + description: GenerationStatus keeps track of the generation for a given resource so that decisions about forced updates can be made. the definition matches the GenerationStatus defined in github.com/openshift/api/v1 + properties: + group: + description: group is the group of the thing you're tracking + type: string + lastGeneration: + description: lastGeneration is the last generation of the thing that controller applies + format: int64 + type: integer + name: + description: name is the name of the thing you're tracking + type: string + namespace: + description: namespace is where the thing you're tracking is + type: string + resource: + description: resource is the resource type of the thing you're tracking + type: string + version: + description: version is the version of the thing you're tracking + type: string + type: object + type: array + observedGeneration: + description: ObservedGeneration is the last generation change you've dealt with + format: int64 + type: integer + relatedResources: + description: RelatedResources are used to track the resources that are related to this Klusterlet + items: + description: RelatedResourceMeta represents the resource that is managed by an operator + properties: + group: + description: group is the group of the thing you're tracking + type: string + name: + description: name is the name of the thing you're tracking + type: string + namespace: + description: namespace is where the thing you're tracking is + type: string + resource: + description: resource is the resource type of the thing you're tracking + type: string + version: + description: version is the version of the thing you're tracking + type: string + type: object + type: array + type: object + type: object + version: v1 + versions: + - name: v1 + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/hack/copy-crds.sh b/hack/copy-crds.sh index c62439f9c..93c996ef3 100755 --- a/hack/copy-crds.sh +++ b/hack/copy-crds.sh @@ -12,5 +12,5 @@ do cp $f ./manifests/klusterlet/ done -cp $CLUSTER_MANAGER_CRD_FILE ./deploy/cluster-manager/crds/ -cp $KLUSTERLET_CRD_FILE ./deploy/klusterlet/crds/ +cp $CLUSTER_MANAGER_CRD_FILE ./deploy/cluster-manager/config/crds/ +cp $KLUSTERLET_CRD_FILE ./deploy/klusterlet/config/crds/ diff --git a/hack/verify-crds.sh b/hack/verify-crds.sh index ca51207c2..43445b17d 100755 --- a/hack/verify-crds.sh +++ b/hack/verify-crds.sh @@ -12,6 +12,6 @@ do diff -N $f ./manifests/klusterlet/$(basename $f) || ( echo 'crd content is incorrect' && false ) done -diff -N $CLUSTER_MANAGER_CRD_FILE ./deploy/cluster-manager/crds/$(basename $CLUSTER_MANAGER_CRD_FILE) || ( echo 'crd content is incorrect' && false ) -diff -N $KLUSTERLET_CRD_FILE ./deploy/klusterlet/crds/$(basename $KLUSTERLET_CRD_FILE) || ( echo 'crd content is incorrect' && false ) +diff -N $CLUSTER_MANAGER_CRD_FILE ./deploy/cluster-manager/config/crds/$(basename $CLUSTER_MANAGER_CRD_FILE) || ( echo 'crd content is incorrect' && false ) +diff -N $KLUSTERLET_CRD_FILE ./deploy/klusterlet/config/crds/$(basename $KLUSTERLET_CRD_FILE) || ( echo 'crd content is incorrect' && false )