diff --git a/.gitignore b/.gitignore index b6ad2a885b6..9148a5b9812 100644 --- a/.gitignore +++ b/.gitignore @@ -73,6 +73,9 @@ pkg/cli/cluster/charts/ # ignore client-sdk-gen temp directory hack/github.com/ +# ignore OLM bundle directory +bundle +bundle.Dockerfile # ignore kubeblocks-docs directory -docs/kubeblocks-docs +docs/kubeblocks-docs \ No newline at end of file diff --git a/Makefile b/Makefile index b79af01dcd1..780ed1ef06d 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,8 @@ GIT_COMMIT = $(shell git rev-list -1 HEAD) GIT_VERSION = $(shell git describe --always --abbrev=0 --tag) GENERATED_CLIENT_PKG = "pkg/client" GENERATED_DEEP_COPY_FILE = "zz_generated.deepcopy.go" +OPERATOR_SDK_VERSION ?= v1.41.1 + # Setting SHELL to bash allows bash commands to be executed by recipes. # This is a requirement for 'setup-envtest.sh' in the test target. # Options are set to exit when a recipe line exits non-zero or a piped command fails. @@ -106,8 +108,9 @@ manifests: test-go-generate controller-gen ## Generate WebhookConfiguration, Clu $(MAKE) client-sdk-gen .PHONY: label-crds +LABEL_CRD_DIR ?= config/crd/bases label-crds: - @for f in config/crd/bases/*.yaml; do \ + @for f in $(LABEL_CRD_DIR)/*.yaml; do \ echo "applying app.kubernetes.io/name=kubeblocks label to $$f"; \ kubectl label --overwrite -f $$f --local=true -o yaml app.kubernetes.io/name=kubeblocks > bin/crd.yaml; \ mv bin/crd.yaml $$f; \ @@ -457,6 +460,71 @@ mv "$$(echo "$(1)" | sed "s/-$(3)$$//")" $(1) ;\ } endef +.PHONY: operator-sdk +OPERATOR_SDK = $(LOCALBIN)/operator-sdk +operator-sdk: ## Install the operator-sdk app +ifneq ($(shell $(OPERATOR_SDK) version 2>/dev/null | awk -F '"' '{print $$2}'), $(OPERATOR_SDK_VERSION)) + @{ \ + set -e ;\ + mkdir -p $(LOCALBIN) ;\ + OS=$(shell go env GOOS) && ARCH=$(shell go env GOARCH) && \ + curl -sSL "https://github.com/operator-framework/operator-sdk/releases/download/${OPERATOR_SDK_VERSION}/operator-sdk_$${OS}_$${ARCH}" -o "$(OPERATOR_SDK)" ;\ + chmod +x "$(LOCALBIN)/operator-sdk" ;\ + } +endif + +##@ OLM Bundle + +BUNDLE_VERSION ?= $(VERSION) +BUNDLE_IMG ?= docker.io/apecloud/kubeblocks-bundle:$(BUNDLE_VERSION) +CHANNELS ?= stable +DEFAULT_CHANNEL ?= stable +OPENSHIFT_VERSIONS ?= "v4.17" +BUNDLE_METADATA_OPTS ?= --channels=$(CHANNELS) --default-channel=$(DEFAULT_CHANNEL) + +.PHONY: olm-bundle +olm-bundle: test-go-generate controller-gen kustomize operator-sdk ## Generate complete OLM bundle (all-in-one) + @echo "==> Generating OLM bundle for version $(BUNDLE_VERSION)" + set -xeEuo pipefail ;\ + CONFIG_TMP_DIR=$$(mktemp -d) ;\ + OLM_CRD_DIR=$$(mktemp -d) ;\ + trap "rm -rf $${CONFIG_TMP_DIR} $${OLM_CRD_DIR}" EXIT ;\ + echo "==> Generating CRDs for bundle in $${OLM_CRD_DIR}" ;\ + $(CONTROLLER_GEN) rbac:roleName=manager-role \ + crd:generateEmbeddedObjectMeta=true \ + webhook \ + paths="./cmd/manager/...;./apis/apps/v1;./apis/apps/v1beta1;./apis/trace/v1;./apis/workloads/v1;./apis/dataprotection/...;./apis/operations/...;./apis/parameters/...;./apis/extensions/...;./apis/experimental/...;./controllers/..." \ + output:crd:artifacts:config="$${OLM_CRD_DIR}" ;\ + $(MAKE) label-crds LABEL_CRD_DIR="$${OLM_CRD_DIR}" --no-print-directory ;\ + cp -r config "$${CONFIG_TMP_DIR}" ;\ + mkdir -p "$${CONFIG_TMP_DIR}/config/crd/olm-bases" ;\ + cp "$${OLM_CRD_DIR}"/*.yaml "$${CONFIG_TMP_DIR}/config/crd/olm-bases/" ;\ + echo "resources:" > "$${CONFIG_TMP_DIR}/config/crd/olm-bases/kustomization.yaml" ;\ + for f in "$${CONFIG_TMP_DIR}/config/crd/olm-bases"/*.yaml; do \ + [ "$$f" = "$${CONFIG_TMP_DIR}/config/crd/olm-bases/kustomization.yaml" ] && continue ;\ + echo "- $$(basename $$f)" >> "$${CONFIG_TMP_DIR}/config/crd/olm-bases/kustomization.yaml" ;\ + done ;\ + echo " - Manager: $(IMG)" ;\ + ( \ + cd "$${CONFIG_TMP_DIR}/config/manager" ;\ + $(KUSTOMIZE) edit set image controller="$(IMG)" ;\ + ) ;\ + rm -fr bundle bundle.Dockerfile ;\ + ($(KUSTOMIZE) build "$${CONFIG_TMP_DIR}/config/olm-manifests") | \ + $(OPERATOR_SDK) generate bundle --verbose --overwrite --manifests --metadata \ + --package kubeblocks \ + --channels $(CHANNELS) \ + --default-channel $(DEFAULT_CHANNEL) \ + --plugins=go.kubebuilder.io/v4 \ + --use-image-digests \ + --version "$(BUNDLE_VERSION)" ;\ + echo "" >> bundle/metadata/annotations.yaml ;\ + echo " # OpenShift annotations." >> bundle/metadata/annotations.yaml ;\ + echo " com.redhat.openshift.versions: $(OPENSHIFT_VERSIONS)" >> bundle/metadata/annotations.yaml ;\ + rm -rf "$${CONFIG_TMP_DIR}" ;\ + $(OPERATOR_SDK) bundle validate --plugins=go.kubebuilder.io/v4 ./bundle ;\ + echo "==> Bundle generated successfully at ./bundle" + # NOTE: include must be placed at the end include docker/docker.mk include cmd/cmd.mk diff --git a/config/default/kustomization.yaml b/config/default/kustomization.yaml index ba8f23978ba..ad86d0ad933 100644 --- a/config/default/kustomization.yaml +++ b/config/default/kustomization.yaml @@ -20,7 +20,7 @@ bases: # crd/kustomization.yaml - ../webhook # [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required. -- ../certmanager +#- ../certmanager # [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'. #- ../prometheus @@ -28,7 +28,7 @@ patchesStrategicMerge: # Protect the /metrics endpoint by putting it behind auth. # If you want your controller-manager to expose the /metrics # endpoint w/o any authn/z, please comment the following line. -- manager_auth_proxy_patch.yaml +#- manager_auth_proxy_patch.yaml # Mount the controller config file for loading manager configurations # through a ComponentConfig type @@ -46,29 +46,30 @@ patchesStrategicMerge: # the following config is for teaching kustomize how to do var substitution vars: # [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER' prefix. -- name: CERTIFICATE_NAMESPACE # namespace of the certificate CR - objref: - kind: Certificate - group: cert-manager.io - version: v1 - name: serving-cert # this name should match the one in certificate.yaml - fieldref: - fieldpath: metadata.namespace -- name: CERTIFICATE_NAME - objref: - kind: Certificate - group: cert-manager.io - version: v1 - name: serving-cert # this name should match the one in certificate.yaml -- name: SERVICE_NAMESPACE # namespace of the service - objref: - kind: Service - version: v1 - name: webhook-service - fieldref: - fieldpath: metadata.namespace -- name: SERVICE_NAME - objref: - kind: Service - version: v1 - name: webhook-service +#vars: +#- name: CERTIFICATE_NAMESPACE # namespace of the certificate CR +# objref: +# kind: Certificate +# group: cert-manager.io +# version: v1 +# name: serving-cert # this name should match the one in certificate.yaml +# fieldref: +# fieldpath: metadata.namespace +#- name: CERTIFICATE_NAME +# objref: +# kind: Certificate +# group: cert-manager.io +# version: v1 +# name: serving-cert # this name should match the one in certificate.yaml +#- name: SERVICE_NAMESPACE # namespace of the service +# objref: +# kind: Service +# version: v1 +# name: webhook-service +# fieldref: +# fieldpath: metadata.namespace +#- name: SERVICE_NAME +# objref: +# kind: Service +# version: v1 +# name: webhook-service diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 2bcd3eeaa94..00b1b2830fc 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -1,3 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + resources: - manager.yaml @@ -5,6 +8,6 @@ generatorOptions: disableNameSuffixHash: true configMapGenerator: -- name: manager-config - files: +- files: - controller_manager_config.yaml + name: manager-config \ No newline at end of file diff --git a/config/olm-default/kustomization.yaml b/config/olm-default/kustomization.yaml new file mode 100644 index 00000000000..b9f40f0b67f --- /dev/null +++ b/config/olm-default/kustomization.yaml @@ -0,0 +1,11 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: kubeblocks-system +namePrefix: kubeblocks- + +# OLM Bundle configuration +# ../crd/olm-bases is dynamically generated during bundle build (see Makefile) +resources: +- ../crd/olm-bases +- ../rbac +- ../manager diff --git a/config/olm-manifests/bases/kubeblocks.clusterserviceversion.yaml b/config/olm-manifests/bases/kubeblocks.clusterserviceversion.yaml new file mode 100644 index 00000000000..af56e0e065e --- /dev/null +++ b/config/olm-manifests/bases/kubeblocks.clusterserviceversion.yaml @@ -0,0 +1,71 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + name: kubeblocks.v0.0.0 + namespace: placeholder + annotations: + alm-examples: '[]' + capabilities: Auto Pilot + categories: Database + description: KubeBlocks is an open-source control plane that runs and manages databases, message queues and other stateful applications on K8s. + certified: "true" + containerImage: + createdAt: + repository: https://github.com/apecloud/kubeblocks + support: ApeCloud + operators.operatorframework.io/builder: operator-sdk-v1.41.1 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + features.operators.openshift.io/disconnected: "true" + features.operators.openshift.io/fips-compliant: "false" + features.operators.openshift.io/proxy-aware: "false" + features.operators.openshift.io/tls-profiles: "false" + features.operators.openshift.io/token-auth-aws: "false" + features.operators.openshift.io/token-auth-azure: "false" + features.operators.openshift.io/token-auth-gcp: "false" + labels: + operatorframework.io/arch.amd64: supported +spec: + displayName: KubeBlocks + description: KubeBlocks is an open-source control plane that runs and manages databases, message queues and other stateful applications on K8s. + install: + spec: + deployments: null + strategy: "" + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - kubeblocks + - database + - mysql + - postgresql + - redis + - mongodb + - kafka + - sql + minKubeVersion: 1.22.0 + provider: + name: ApeCloud + url: https://apecloud.com + maintainers: + - name: KubeBlocks Team + email: kubeblocks@apecloud.com + links: + - name: Documentation + url: https://kubeblocks.io + - name: GitHub + url: https://github.com/apecloud/kubeblocks + - name: Slack Community + url: https://kubeblocks.slack.com + maturity: stable + icon: + - base64data: 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 + mediatype: image/png + apiservicedefinitions: {} + customresourcedefinitions: {} diff --git a/config/olm-manifests/kustomization.yaml b/config/olm-manifests/kustomization.yaml new file mode 100644 index 00000000000..900bbb75e31 --- /dev/null +++ b/config/olm-manifests/kustomization.yaml @@ -0,0 +1,19 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- ../olm-default +- bases/kubeblocks.clusterserviceversion.yaml +# Replace containerImage annotation with controller-manager deployment image +replacements: +- source: + kind: Deployment + name: kubeblocks-controller-manager + fieldPath: spec.template.spec.containers.0.image + targets: + - select: + kind: ClusterServiceVersion + fieldPaths: + - metadata.annotations.containerImage + options: + create: true