From 219bceba988347173797069274d02c76d72d9a09 Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Tue, 15 Sep 2026 11:25:00 +0200 Subject: [PATCH 1/9] Run unit tests when envtest assets are unavailable Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- controllers/suite_test.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/controllers/suite_test.go b/controllers/suite_test.go index c9c5ac37..cdcd7cd2 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -64,6 +64,15 @@ func TestMain(m *testing.M) { func run(m *testing.M) int { flag.Parse() // required to check for '-short' flag setting + if !testing.Short() && !envtestAvailable() { + written, err := fmt.Fprintln(os.Stderr, "envtest binaries not found; running short tests") + if err != nil || written == 0 { + return 1 + } + if err := flag.Set("test.short", "true"); err != nil { + return 1 + } + } if testing.Short() { return m.Run() } @@ -83,6 +92,19 @@ func run(m *testing.M) int { return m.Run() } +func envtestAvailable() bool { + assets := os.Getenv("KUBEBUILDER_ASSETS") + if assets == "" { + assets = "/usr/local/kubebuilder/bin" + } + for _, binary := range []string{"etcd", "kube-apiserver"} { + if _, err := os.Stat(filepath.Join(assets, binary)); err != nil { + return false + } + } + return true +} + func zapEncoderConfig() zapcore.EncoderConfig { encCfg := zap.NewDevelopmentEncoderConfig() // hide most of logger name, since zap.AddCaller includes line numbers From 2ef1ca7b95b7ff0b7c2655b9ad463c8d8f01023a Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Tue, 15 Sep 2026 11:27:04 +0200 Subject: [PATCH 2/9] Publish operator releases with Helm Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- .github/workflows/ci.yml | 6 +- .github/workflows/release.yml | 67 ++ Makefile | 71 +- README.md | 104 +-- charts/ibmcloud-operator/Chart.yaml | 14 + .../crds/ibmcloud.ibm.com_bindings.yaml | 418 ++++++++++ .../crds/ibmcloud.ibm.com_services.yaml | 761 ++++++++++++++++++ charts/ibmcloud-operator/templates/NOTES.txt | 8 + .../ibmcloud-operator/templates/_helpers.tpl | 60 ++ .../templates/deployment.yaml.tpl | 65 ++ .../templates/metrics.yaml.tpl | 39 + .../ibmcloud-operator/templates/rbac.yaml.tpl | 104 +++ .../templates/serviceaccount.yaml.tpl | 13 + charts/ibmcloud-operator/values.yaml | 42 + docs/install.md | 91 ++- docs/releasing.md | 46 ++ 16 files changed, 1816 insertions(+), 93 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 charts/ibmcloud-operator/Chart.yaml create mode 100644 charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml create mode 100644 charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml create mode 100644 charts/ibmcloud-operator/templates/NOTES.txt create mode 100644 charts/ibmcloud-operator/templates/_helpers.tpl create mode 100644 charts/ibmcloud-operator/templates/deployment.yaml.tpl create mode 100644 charts/ibmcloud-operator/templates/metrics.yaml.tpl create mode 100644 charts/ibmcloud-operator/templates/rbac.yaml.tpl create mode 100644 charts/ibmcloud-operator/templates/serviceaccount.yaml.tpl create mode 100644 charts/ibmcloud-operator/values.yaml create mode 100644 docs/releasing.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0b6c9e9..fcd2666e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,11 @@ jobs: go-version: 1.17.13 cache: true + - name: Set up Helm + uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4.3.1 + with: + version: v3.18.4 + - name: Lint run: make lint @@ -46,4 +51,3 @@ jobs: # missing: # - e2e (was disabled in Travis) # - int-test (called coverage-unit in the Makefile and unit-tests in Travis) (cannot run on forks, is this needed even?) -# - release diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..23a64479 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,67 @@ +name: Release + +on: + release: + types: + - published + +permissions: + contents: write + packages: write + +jobs: + release: + name: Publish image and Helm chart + runs-on: ubuntu-24.04 + timeout-minutes: 30 + + steps: + - name: Check out release tag + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + ref: ${{ github.event.release.tag_name }} + persist-credentials: false + + - name: Resolve release version + id: release + env: + RELEASE_TAG: ${{ github.event.release.tag_name }} + run: | + if [[ ! "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Release tag must have the form vMAJOR.MINOR.PATCH" >&2 + exit 1 + fi + echo "version=${RELEASE_TAG#v}" >> "$GITHUB_OUTPUT" + + - name: Set up Helm + uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4.3.1 + with: + version: v3.18.4 + + - name: Log in to Docker Hub + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and publish operator image + env: + RELEASE_VERSION: ${{ steps.release.outputs.version }} + run: make docker-push + + - name: Log in to GitHub Container Registry + env: + HELM_REGISTRY_PASSWORD: ${{ secrets.GITHUB_TOKEN }} + run: echo "$HELM_REGISTRY_PASSWORD" | helm registry login ghcr.io --username "$GITHUB_ACTOR" --password-stdin + + - name: Package and publish Helm chart + env: + RELEASE_VERSION: ${{ steps.release.outputs.version }} + run: make release-helm + + - name: Attach Helm chart to GitHub release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + RELEASE_TAG: ${{ github.event.release.tag_name }} + RELEASE_VERSION: ${{ steps.release.outputs.version }} + run: gh release upload "$RELEASE_TAG" "out/ibmcloud-operator-${RELEASE_VERSION}.tgz" --clobber diff --git a/Makefile b/Makefile index c1f8015d..3d85009b 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ -KUBEBUILDER_VERSION = 2.3.1 -export KUBEBUILDER_ASSETS = ${PWD}/cache/kubebuilder_${KUBEBUILDER_VERSION}/bin -CONTROLLER_GEN_VERSION = 0.8.0 +KUBEBUILDER_VERSION=2.3.1 +export KUBEBUILDER_ASSETS=${PWD}/cache/kubebuilder_${KUBEBUILDER_VERSION}/bin +CONTROLLER_GEN_VERSION=0.8.0 CONTROLLER_GEN=${PWD}/cache/controller-gen_${CONTROLLER_GEN_VERSION}/controller-gen -LINT_VERSION = 1.28.3 +export LINT_VERSION=1.28.3 GOSEC_VERSION="v2.9.2" KUBEVAL_VERSION= 0.15.0 KUBEVAL_KUBE_VERSION=1.18.1 @@ -13,6 +13,10 @@ SHELL := /usr/bin/env PATH=$(shell echo ${PWD}/cache/bin:${KUBEBUILDER_ASSETS}:$ RELEASE_VERSION ?= 0.0.0 # Image URL to use all building/pushing image targets IMG ?= cloudoperators/ibmcloud-operator:${RELEASE_VERSION} +HELM ?= helm +HELM_CHART ?= charts/ibmcloud-operator +HELM_REGISTRY ?= oci://ghcr.io/ibm +export HELM_PACKAGE=out/ibmcloud-operator-${RELEASE_VERSION}.tgz # Produce CRDs that work back to Kubernetes 1.11 (no version conversion) CRD_OPTIONS ?= "crd" @@ -178,15 +182,58 @@ cache/controller-gen_${CONTROLLER_GEN_VERSION}: cache out: mkdir -p out -# Prepares Kubernetes yaml files for release. Useful for testing against your own cluster. +.PHONY: helm-crds +helm-crds: + cmp config/crd/bases/ibmcloud.ibm.com_bindings.yaml $(HELM_CHART)/crds/ibmcloud.ibm.com_bindings.yaml + cmp config/crd/bases/ibmcloud.ibm.com_services.yaml $(HELM_CHART)/crds/ibmcloud.ibm.com_services.yaml + +.PHONY: helm-lint +helm-lint: helm-crds + $(HELM) lint $(HELM_CHART) --strict \ + --set-string image.tag=${RELEASE_VERSION} + +.PHONY: helm-template +helm-template: + @manifest="$$(mktemp)"; trap 'rm -f "$$manifest"' EXIT; \ + $(HELM) template ibmcloud-operator $(HELM_CHART) \ + --namespace ibmcloud-operator-system \ + --include-crds \ + --set-string image.tag=${RELEASE_VERSION} >"$$manifest"; \ + for kind in CustomResourceDefinition ServiceAccount ClusterRole ClusterRoleBinding Role RoleBinding Service Deployment; do \ + grep -q "^kind: $$kind$$" "$$manifest" || { echo "Helm chart did not render $$kind" >&2; exit 1; }; \ + done + +.PHONY: helm-package +helm-package: helm-lint out + $(HELM) package $(HELM_CHART) \ + --destination out \ + --version ${RELEASE_VERSION} \ + --app-version ${RELEASE_VERSION} + +.PHONY: release-helm +release-helm: helm-package + @if [[ -n "$${HELM_REGISTRY_USERNAME}" ]]; then \ + echo "$${HELM_REGISTRY_PASSWORD}" | $(HELM) registry login ghcr.io \ + --username "$${HELM_REGISTRY_USERNAME}" --password-stdin; \ + fi + $(HELM) push $(HELM_PACKAGE) $(HELM_REGISTRY) + +.PHONY: release +release: docker-push release-helm + +.PHONY: validate-release +validate-release: helm-lint helm-template helm-package docker-build + +# Deprecated OperatorHub release targets. Helm is the supported release path. .PHONY: release-prep -release-prep: kustomize manifests out +release-prep: kustomize manifests out cd config/manager && kustomize edit set image controller=${IMG} kustomize build config/default --output out/ ulimit -n 1000 && go run ./internal/cmd/genolm --version ${RELEASE_VERSION} .PHONY: release-operatorhub release-operatorhub: + @echo "WARNING: OperatorHub publishing is deprecated; use release-helm." >&2 go run ./internal/cmd/release \ -version "${RELEASE_VERSION}" \ -csv "out/ibmcloud_operator.v${RELEASE_VERSION}.clusterserviceversion.yaml" \ @@ -198,13 +245,9 @@ release-operatorhub: -signoff-name "$${RELEASE_GIT_NAME}" \ -signoff-email "$${RELEASE_GIT_EMAIL}" -.PHONY: release -release: release-prep docker-push release-operatorhub - -# Validates release artifacts. -# TODO add validation for operator-courier. Currently hitting WAY too many issues with Travis CI and Python deps. -.PHONY: validate-release -validate-release: kubeval release-prep docker-build +# Validates deprecated OperatorHub release artifacts. +.PHONY: validate-operatorhub-release +validate-operatorhub-release: kubeval release-prep docker-build kubeval -d out --kubernetes-version "${KUBEVAL_KUBE_VERSION}" --ignored-filename-patterns package.yaml --ignore-missing-schemas .PHONY: operator-courier @@ -226,7 +269,7 @@ operator-push-test: verify-operator-meta docker-build # QUAY_REPO=ibmcloud-operator-image # QUAY_APP=ibmcloud-operator NOTE: Must have a repository AND a quay "application". They aren't the same thing. # QUAY_USER=myuser+mybot NOTE: Bot users are best, so you can manage permissions better. - # QUAY_TOKEN=abcdef1234567 + # QUAY_TOKEN= @for v in "${QUAY_NAMESPACE}" "${QUAY_APP}" "${QUAY_REPO}" "${RELEASE_VERSION}" "${QUAY_USER}" "${QUAY_TOKEN}"; do \ if [[ -z "$$v" ]]; then \ echo 'Not all Quay variables set. See the make target for details.'; \ diff --git a/README.md b/README.md index f5596cd5..56330a6a 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,7 @@ With the IBM Cloud Operator, you can provision and bind [IBM public cloud servic * [Prerequisites](#prerequisites) * [Setting up the operator](#setting-up-the-operator) * [Using a service ID](#using-a-service-id) - * [Installing the operator for OpenShift clusters](#installing-the-operator-for-openshift-clusters) - * [Installing the operator for Kubernetes clusters](#installing-the-operator-for-kubernetes-clusters) + * [Legacy installation methods](#legacy-installation-methods) * [Uninstalling the operator](#uninstalling-the-operator) * [Using the IBM Cloud Operator](#using-the-ibm-cloud-operator) * [Using separate IBM Cloud accounts](#using-separate-ibm-cloud-accounts) @@ -48,30 +47,16 @@ With the IBM Cloud Operator, you can provision and bind [IBM public cloud servic -Follow the instructions for the kind of installation you used: OperatorHub or the `curl` [installation command](README.md#setting-up-the-operator). +Helm is the supported installation and upgrade method for version 2.0.0 and later: -### `curl` installation command - -To upgrade existing `curl` installs, you can reinstall the operator with the `curl` [installation command](README.md#setting-up-the-operator). -If your current installation is version 0.1.x or 0.2.x, then follow these steps to complete a successful upgrade. - -1. [Copy your secrets and configmaps](#upgrading-to-version-v03-or-v10) to use the new names. -2. Re-run the `curl` [installation command](#setting-up-the-operator) to install the latest version. -3. Verify the new operator is running. - - ```bash - kubectl get pods -n ibmcloud-operator-system - ``` - -4. Verify `ibmcloud.ibm.com/v1` `Service` versions provision correctly. -5. Delete the old version with `kubectl delete ns ibmcloud-operators`. -6. Delete the secrets and configmaps using the old names from step 1. - -### OperatorHub - - +```bash +helm upgrade ibmcloud-operator \ + oci://ghcr.io/ibm/ibmcloud-operator \ + --version 2.0.0 \ + --namespace ibmcloud-operator-system +``` -To upgrade an OperatorHub installation, use the OpenShift web console to perform the upgrade. If upgrading from the `alpha` channel subscription to `stable`, follow the additional upgrade instructions below. +OperatorHub and the `curl` installer are deprecated and will not publish version 2.0.0. See the [installation guide](docs/install.md) for migration instructions and the cross-namespace Binding credential change. ### Upgrading to version v0.3 or v1.0 **IMPORTANT NOTICE:** v0.1 and v0.2 used a different naming scheme for secrets and configmaps. Before you update the IBM Cloud Operator, create secret and configmap resources with these names and copy the contents of your previous resources to the new resources. Then, the upgraded operator recognizes and continues to update the resources. @@ -89,8 +74,7 @@ Existing `Service` and `Binding` resources **do not** need modification for the **Tip:** Forgot to update the secret and configmap names before upgrading? The operator will not take action on Service and Binding resources until the new secrets and configmaps have been created. Creating these after the upgrade will also work. -### OperatorHub stable channel -Continuous updates and bug fixes are provided in the latest stable channel. Subscribing to the `stable` channel in OperatorHub means you automatically get the latest updates without breaking backward compatibility. +The OperatorHub catalog entry is deprecated, does not receive releases after version 1.x, and is scheduled for removal. Existing installations must migrate to Helm. ### Changelog @@ -103,10 +87,11 @@ For a list of recent changes, see the [releases page](https://github.com/IBM/clo ## Prerequisites 1. Have an [IBM Cloud account](https://cloud.ibm.com/registration). -2. Have a cluster that runs Kubernetes version 1.11 or later (OpenShift 3.11 or later). +2. Have a cluster that runs Kubernetes version 1.16 or later. 3. Install the required command line tools. * [IBM Cloud CLI](https://cloud.ibm.com/docs/cli?topic=cloud-cli-getting-started) (`ibmcloud`) * [Kubernetes CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl/) (`kubectl`) + * [Helm](https://helm.sh/docs/intro/install/) 3 or later (`helm`) 4. Log in to your IBM Cloud account from the CLI. ```bash @@ -146,23 +131,21 @@ kubectl config current-context ## Setting up the operator -You can use an installation script to set up the IBM Cloud Operator. -By default, the installation script stores an API key in a Kubernetes secret in your cluster that can be accessed by the IBM Cloud Operator. -Next, the script sets default values that are used to provision IBM Cloud services, like the resource group and region to provision the services in. Later, you can override any default value in the `Service` custom resource. Finally, the script deploys the operator in your cluster. - -To use your own API key, set the `IBMCLOUD_API_KEY` environment variable to the key before running the installation script: +Install IBM Cloud Operator 2.0.0 and later with Helm: ```bash -export IBMCLOUD_API_KEY="CUSTOM_API_KEY" +helm install ibmcloud-operator \ + oci://ghcr.io/ibm/ibmcloud-operator \ + --version 2.0.0 \ + --namespace ibmcloud-operator-system \ + --create-namespace ``` -If installed with Operator Hub, the operator will run in the `openshift-operators` namespace. Otherwise, it will run in the `ibmcloud-operator-system` namespace. - -Prefer to create the secrets and defaults yourself? See the [IBM Cloud Operator installation guide](docs/install.md). +The chart does not accept or store IBM Cloud API keys. Create the account Secret and defaults ConfigMap in each workload namespace after installing the chart. See the [IBM Cloud Operator installation guide](docs/install.md) for complete installation and migration instructions. ### Using a service ID -By default, the installation script creates an IBM Cloud API key that impersonates your user credentials, to use to set up the IBM Cloud Operator. However, you might want to create a service ID in IBM Cloud Identity and Access Managment (IAM). By using a service ID, you can control access for the IBM Cloud Operator without having the permissions tied to a particular user, such as if that user leaves the company. For more information, see the [IBM Cloud docs](https://cloud.ibm.com/docs/account?topic=account-serviceids). +Use a service ID API key to control the operator's IBM Cloud permissions independently from a particular user. For more information, see the [IBM Cloud docs](https://cloud.ibm.com/docs/account?topic=account-serviceids). 1. Create a service ID in IBM Cloud IAM. If possible, do not use spaces in the names for your IAM credentials. When you use the operator binding feature, any spaces are replaced with underscores. @@ -182,7 +165,7 @@ By default, the installation script creates an IBM Cloud API key that impersonat ibmcloud iam service-api-key-create apikey-ico serviceid-ico -d api-key-for-ibm-cloud-operator ``` -4. Set the API key of the service ID as your CLI environment variable. Now, when you run the installation script, the script uses the service ID's API key. The following command is an example for macOS. +4. Set the API key of the service ID as your CLI environment variable. Use this value when creating the namespace's `ibmcloud-operator-secret`, as described in the [installation guide](docs/install.md). ```bash export IBMCLOUD_API_KEY= @@ -200,56 +183,25 @@ By default, the installation script creates an IBM Cloud API key that impersonat [Back to top](#ibm-cloud-operator) -### Installing the operator for OpenShift clusters - -Before you begin, complete the [prerequisite steps](README.md#prerequisites) to log in to IBM Cloud and your cluster, and optionally set up a [service ID API key](README.md#using-a-service-id). +### Legacy installation methods -To configure the latest release for OpenShift before installing via the OperatorHub, run the following script: - -* **Latest release**: - - ```bash - curl -sL https://raw.githubusercontent.com/IBM/cloud-operators/master/hack/configure-operator.sh | bash - ``` - -* **Specific release**: Replace `-v 0.0.0` with the specific version that you want to install. - - ```bash - curl -sL https://raw.githubusercontent.com/IBM/cloud-operators/master/hack/configure-operator.sh | bash -s -- -v 0.0.0 store-creds - ``` +The OperatorHub catalog entry and `hack/configure-operator.sh` installer are deprecated and do not receive version 2.0.0 or later. The catalog entry is scheduled for removal. Migrate existing installations by following the [installation guide](docs/install.md#migrate-from-operatorhub). [Back to top](#ibm-cloud-operator) -### Installing the operator for Kubernetes clusters - -Before you begin, complete the [prerequisite steps](#prerequisites) to log in to IBM Cloud and your cluster, and optionally set up a [service ID API key](#using-a-service-id). - -* **Latest release**: To install the latest stable release of the operator, run the following script. - - ```bash - curl -sL https://raw.githubusercontent.com/IBM/cloud-operators/master/hack/configure-operator.sh | bash -s -- install - ``` - -* **Specific release**: Replace `-v 0.0.0` with the specific version that you want to install. - - ```bash - curl -sL https://raw.githubusercontent.com/IBM/cloud-operators/master/hack/configure-operator.sh | bash -s -- -v 0.0.0 install - ``` - -[Back to top](#ibm-cloud-operator) - ### Uninstalling the operator -**WARNING:** This is a destructive operation. The uninstaller deletes the `Service` and `Binding` CRDs, which deletes the custom resources of those types. If you only want to upgrade to a newer version, only delete the operator's Deployment. -Before you begin, complete the [prerequisite steps](#prerequisites) to log in to IBM Cloud and your cluster. +Removing the Helm release leaves the `Service` and `Binding` CRDs and their custom resources in place. The deprecated legacy uninstaller is destructive because it deletes those CRDs. -To remove the operator and all of the associated custom resources, run the following script: +Remove the Helm release: ```bash -curl -sL https://raw.githubusercontent.com/IBM/cloud-operators/master/hack/configure-operator.sh | bash -s -- remove +helm uninstall ibmcloud-operator --namespace ibmcloud-operator-system ``` +Helm leaves the IBM Cloud Operator CRDs and custom resources in place. See the [installation guide](docs/install.md#uninstall) for explicit CRD removal instructions. + [Back to top](#ibm-cloud-operator) diff --git a/charts/ibmcloud-operator/Chart.yaml b/charts/ibmcloud-operator/Chart.yaml new file mode 100644 index 00000000..63b2427c --- /dev/null +++ b/charts/ibmcloud-operator/Chart.yaml @@ -0,0 +1,14 @@ +apiVersion: v2 +name: ibmcloud-operator +description: Provision and bind IBM Cloud services with Kubernetes custom resources. +type: application +version: 2.0.0 +appVersion: "2.0.0" +kubeVersion: ">=1.16.0-0" +home: https://github.com/IBM/cloud-operators +sources: + - https://github.com/IBM/cloud-operators +keywords: + - ibm-cloud + - operator + - services diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml new file mode 100644 index 00000000..ef88b4b7 --- /dev/null +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml @@ -0,0 +1,418 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: bindings.ibmcloud.ibm.com +spec: + group: ibmcloud.ibm.com + names: + kind: Binding + listKind: BindingList + plural: bindings + singular: binding + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Binding is the Schema for the bindings API + 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: BindingSpec defines the desired state of Binding + properties: + alias: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + type: string + secretName: + type: string + serviceName: + type: string + serviceNamespace: + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + type: string + keyInstanceId: + type: string + message: + type: string + secretName: + type: string + state: + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml new file mode 100644 index 00000000..bb686dad --- /dev/null +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml @@ -0,0 +1,761 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + creationTimestamp: null + name: services.ibmcloud.ibm.com +spec: + group: ibmcloud.ibm.com + names: + kind: Service + listKind: ServiceList + plural: services + singular: service + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Service is the Schema for the services API + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + type: string + externalName: + type: string + generation: + format: int64 + type: integer + instanceId: + type: string + message: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + state: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/charts/ibmcloud-operator/templates/NOTES.txt b/charts/ibmcloud-operator/templates/NOTES.txt new file mode 100644 index 00000000..dd9d88ab --- /dev/null +++ b/charts/ibmcloud-operator/templates/NOTES.txt @@ -0,0 +1,8 @@ +IBM Cloud Operator {{ .Chart.AppVersion }} is installed in namespace {{ .Release.Namespace }}. + +Before creating Service or Binding resources, create the IBM Cloud account +configuration in each workload namespace. See: +https://github.com/IBM/cloud-operators/blob/master/docs/install.md + +Check the controller: + kubectl get deployment -n {{ .Release.Namespace }} {{ include "ibmcloud-operator.fullname" . }} diff --git a/charts/ibmcloud-operator/templates/_helpers.tpl b/charts/ibmcloud-operator/templates/_helpers.tpl new file mode 100644 index 00000000..e6d750d0 --- /dev/null +++ b/charts/ibmcloud-operator/templates/_helpers.tpl @@ -0,0 +1,60 @@ +{{- define "ibmcloud-operator.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{- define "ibmcloud-operator.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{- define "ibmcloud-operator.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{- define "ibmcloud-operator.labels" -}} +helm.sh/chart: {{ include "ibmcloud-operator.chart" . }} +{{ include "ibmcloud-operator.selectorLabels" . }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{- define "ibmcloud-operator.selectorLabels" -}} +app.kubernetes.io/name: {{ include "ibmcloud-operator.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +control-plane: controller-manager +{{- end }} + +{{- define "ibmcloud-operator.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "ibmcloud-operator.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{- define "ibmcloud-operator.managerRoleName" -}} +{{- printf "%s-manager" ((include "ibmcloud-operator.fullname" .) | trunc 55 | trimSuffix "-") }} +{{- end }} + +{{- define "ibmcloud-operator.proxyRoleName" -}} +{{- printf "%s-proxy" ((include "ibmcloud-operator.fullname" .) | trunc 57 | trimSuffix "-") }} +{{- end }} + +{{- define "ibmcloud-operator.leaderElectionRoleName" -}} +{{- printf "%s-leader-election" ((include "ibmcloud-operator.fullname" .) | trunc 47 | trimSuffix "-") }} +{{- end }} + +{{- define "ibmcloud-operator.metricsReaderRoleName" -}} +{{- printf "%s-metrics-reader" ((include "ibmcloud-operator.fullname" .) | trunc 48 | trimSuffix "-") }} +{{- end }} + +{{- define "ibmcloud-operator.metricsName" -}} +{{- printf "%s-metrics" ((include "ibmcloud-operator.fullname" .) | trunc 55 | trimSuffix "-") }} +{{- end }} diff --git a/charts/ibmcloud-operator/templates/deployment.yaml.tpl b/charts/ibmcloud-operator/templates/deployment.yaml.tpl new file mode 100644 index 00000000..3bd87d73 --- /dev/null +++ b/charts/ibmcloud-operator/templates/deployment.yaml.tpl @@ -0,0 +1,65 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "ibmcloud-operator.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + {{- include "ibmcloud-operator.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "ibmcloud-operator.selectorLabels" . | nindent 8 }} + spec: + serviceAccountName: {{ include "ibmcloud-operator.serviceAccountName" . }} + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: kube-rbac-proxy + image: "{{ .Values.metrics.proxy.image.repository }}:{{ .Values.metrics.proxy.image.tag }}" + imagePullPolicy: {{ .Values.metrics.proxy.image.pullPolicy }} + args: + - --secure-listen-address=0.0.0.0:8443 + - --upstream=http://127.0.0.1:8080/ + - --logtostderr=true + - --v=10 + ports: + - name: https + containerPort: 8443 + protocol: TCP + - name: manager + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - /manager + args: + - --metrics-addr=127.0.0.1:8080 + - --enable-leader-election + env: + - name: CONTROLLER_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: MAX_CONCURRENT_RECONCILES + value: {{ .Values.maxConcurrentReconciles | quote }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + terminationGracePeriodSeconds: 10 + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/charts/ibmcloud-operator/templates/metrics.yaml.tpl b/charts/ibmcloud-operator/templates/metrics.yaml.tpl new file mode 100644 index 00000000..000ed17a --- /dev/null +++ b/charts/ibmcloud-operator/templates/metrics.yaml.tpl @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "ibmcloud-operator.metricsName" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} + {{- with .Values.metrics.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + {{- include "ibmcloud-operator.selectorLabels" . | nindent 4 }} +{{- if .Values.metrics.serviceMonitor.enabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "ibmcloud-operator.metricsName" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} + {{- with .Values.metrics.serviceMonitor.additionalLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + endpoints: + - path: /metrics + port: https + selector: + matchLabels: + {{- include "ibmcloud-operator.selectorLabels" . | nindent 6 }} +{{- end }} diff --git a/charts/ibmcloud-operator/templates/rbac.yaml.tpl b/charts/ibmcloud-operator/templates/rbac.yaml.tpl new file mode 100644 index 00000000..ed45bbda --- /dev/null +++ b/charts/ibmcloud-operator/templates/rbac.yaml.tpl @@ -0,0 +1,104 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "ibmcloud-operator.managerRoleName" . }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["configmaps", "secrets"] + verbs: ["create", "delete", "get", "list", "patch", "update", "watch"] + - apiGroups: ["ibmcloud.ibm.com"] + resources: ["bindings", "bindings/finalizers", "services", "services/finalizers"] + verbs: ["create", "delete", "get", "list", "patch", "update", "watch"] + - apiGroups: ["ibmcloud.ibm.com"] + resources: ["bindings/status", "services/status"] + verbs: ["get", "patch", "update"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "ibmcloud-operator.managerRoleName" . }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ include "ibmcloud-operator.managerRoleName" . }} +subjects: + - kind: ServiceAccount + name: {{ include "ibmcloud-operator.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ include "ibmcloud-operator.leaderElectionRoleName" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] + - apiGroups: [""] + resources: ["configmaps/status"] + verbs: ["get", "update", "patch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["create"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ include "ibmcloud-operator.leaderElectionRoleName" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ include "ibmcloud-operator.leaderElectionRoleName" . }} +subjects: + - kind: ServiceAccount + name: {{ include "ibmcloud-operator.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "ibmcloud-operator.proxyRoleName" . }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} +rules: + - apiGroups: ["authentication.k8s.io"] + resources: ["tokenreviews"] + verbs: ["create"] + - apiGroups: ["authorization.k8s.io"] + resources: ["subjectaccessreviews"] + verbs: ["create"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "ibmcloud-operator.proxyRoleName" . }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ include "ibmcloud-operator.proxyRoleName" . }} +subjects: + - kind: ServiceAccount + name: {{ include "ibmcloud-operator.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "ibmcloud-operator.metricsReaderRoleName" . }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} +rules: + - nonResourceURLs: ["/metrics"] + verbs: ["get"] diff --git a/charts/ibmcloud-operator/templates/serviceaccount.yaml.tpl b/charts/ibmcloud-operator/templates/serviceaccount.yaml.tpl new file mode 100644 index 00000000..aeb2792c --- /dev/null +++ b/charts/ibmcloud-operator/templates/serviceaccount.yaml.tpl @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "ibmcloud-operator.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "ibmcloud-operator.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/ibmcloud-operator/values.yaml b/charts/ibmcloud-operator/values.yaml new file mode 100644 index 00000000..39aef3a1 --- /dev/null +++ b/charts/ibmcloud-operator/values.yaml @@ -0,0 +1,42 @@ +replicaCount: 1 + +image: + repository: cloudoperators/ibmcloud-operator + pullPolicy: IfNotPresent + # Defaults to the chart appVersion when empty. + tag: "" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + create: true + annotations: {} + name: "" + +maxConcurrentReconciles: 1 + +resources: + limits: + cpu: 100m + memory: 175Mi + requests: + cpu: 100m + memory: 20Mi + +metrics: + proxy: + image: + repository: gcr.io/kubebuilder/kube-rbac-proxy + tag: v0.5.0 + pullPolicy: IfNotPresent + service: + annotations: {} + serviceMonitor: + enabled: false + additionalLabels: {} + +nodeSelector: {} +tolerations: [] +affinity: {} diff --git a/docs/install.md b/docs/install.md index 8d212c73..1fb61c79 100644 --- a/docs/install.md +++ b/docs/install.md @@ -1,3 +1,90 @@ -# IBM Cloud Operator Install Guide +# IBM Cloud Operator installation -Coming soon \ No newline at end of file +Helm is the supported installation method for IBM Cloud Operator 2.0.0 and later. The OperatorHub catalog entry and the legacy `curl` installer are deprecated. + +## Prerequisites + +- Kubernetes 1.16 or later +- Helm 3 or later +- An IBM Cloud API key with access to the services the operator will manage + +## Install the operator + +Install the released chart from the IBM GitHub Container Registry namespace: + +```bash +helm install ibmcloud-operator \ + oci://ghcr.io/ibm/ibmcloud-operator \ + --version 2.0.0 \ + --namespace ibmcloud-operator-system \ + --create-namespace +``` + +To install a chart from a source checkout instead: + +```bash +helm install ibmcloud-operator ./charts/ibmcloud-operator \ + --namespace ibmcloud-operator-system \ + --create-namespace +``` + +The chart installs the `Service` and `Binding` CRDs, cluster-wide controller RBAC, the controller Deployment, and its metrics Service. To create a `ServiceMonitor`, set `metrics.serviceMonitor.enabled=true`. This requires the Prometheus Operator CRDs to be installed first. + +## Configure an IBM Cloud account + +Create the account Secret and defaults ConfigMap in every namespace where `Service` or `Binding` resources will be created. Do not put API keys in Helm values because Helm stores release values in the cluster. + +```bash +export IBMCLOUD_API_KEY='' +export IBMCLOUD_REGION='us-south' +export IBMCLOUD_RESOURCE_GROUP_ID='' +export WORKLOAD_NAMESPACE='' + +kubectl create namespace "$WORKLOAD_NAMESPACE" + +kubectl -n "$WORKLOAD_NAMESPACE" create secret generic ibmcloud-operator-secret \ + --from-literal=api-key="$IBMCLOUD_API_KEY" \ + --from-literal=region="$IBMCLOUD_REGION" + +kubectl -n "$WORKLOAD_NAMESPACE" create configmap ibmcloud-operator-defaults \ + --from-literal=region="$IBMCLOUD_REGION" \ + --from-literal=resourcegroupid="$IBMCLOUD_RESOURCE_GROUP_ID" +``` + +Cloud Foundry services also require `org` and `space` entries in `ibmcloud-operator-defaults`. See [Account context in operator secret and configmap](../README.md#account-context-in-operator-secret-and-configmap) for all supported values and management-namespace configuration. + +Bindings resolve their IBM Cloud account context from the Binding namespace, including when `spec.serviceNamespace` refers to a Service in another namespace. This differs from releases before 2.0.0, which resolved it from the Service namespace. + +## Upgrade + +```bash +helm upgrade ibmcloud-operator \ + oci://ghcr.io/ibm/ibmcloud-operator \ + --version 2.0.0 \ + --namespace ibmcloud-operator-system +``` + +Before upgrading an installation that has cross-namespace Bindings, verify that the Binding namespace's IBM Cloud identity can manage each referenced service instance. Keys created by an older release used the Service namespace's identity and might need to be removed manually if the new identity cannot access them. + +Helm installs CRDs on initial installation but does not upgrade or delete CRDs. Apply changed CRDs from the new chart before an upgrade when release notes require it. + +## Migrate from OperatorHub + +1. Stop the OperatorHub-managed controller by deleting its Subscription and ClusterServiceVersion without deleting the IBM Cloud Operator CRDs or custom resources. +2. Confirm that no old controller pod is running. +3. Install the Helm chart into `ibmcloud-operator-system`. +4. Verify that the Helm-managed controller reconciles existing resources. + +Do not run the OperatorHub-managed and Helm-managed controllers at the same time. + +## Uninstall + +```bash +helm uninstall ibmcloud-operator --namespace ibmcloud-operator-system +``` + +Helm leaves the CRDs and all `Service` and `Binding` resources in place. Delete the CRDs only when you intend to delete all corresponding custom resources: + +```bash +kubectl delete crd bindings.ibmcloud.ibm.com services.ibmcloud.ibm.com +``` diff --git a/docs/releasing.md b/docs/releasing.md new file mode 100644 index 00000000..92d39295 --- /dev/null +++ b/docs/releasing.md @@ -0,0 +1,46 @@ +# Releasing IBM Cloud Operator + +Version 2.0.0 and later are released as a container image and an OCI Helm chart. OperatorHub publishing is deprecated. + +## Automated release + +The `Release` GitHub Actions workflow runs when a GitHub release is published from a tag named `vMAJOR.MINOR.PATCH`. It: + +1. Builds and pushes `cloudoperators/ibmcloud-operator:MAJOR.MINOR.PATCH` to Docker Hub. +2. Packages the chart with matching chart and application versions. +3. Pushes the chart to `oci://ghcr.io/ibm/ibmcloud-operator`. +4. Attaches the packaged chart to the GitHub release. + +The repository must define `DOCKER_USERNAME` and `DOCKER_PASSWORD` Actions secrets. The workflow uses its `GITHUB_TOKEN` to publish the chart to GitHub Container Registry. After the first publication, verify that the package is linked to this repository and has public visibility so users can install it without registry credentials. + +Run the release validation before creating the tag: + +```bash +make validate-release RELEASE_VERSION=2.0.0 +``` + +## Manual release + +Authenticate Docker and Helm, then run: + +```bash +export RELEASE_VERSION=2.0.0 +export DOCKER_USERNAME='' +export DOCKER_PASSWORD='' +export HELM_REGISTRY_USERNAME='' +export HELM_REGISTRY_PASSWORD='' +make release +``` + +Override `IMG` or `HELM_REGISTRY` when publishing to another registry. + +The legacy `release-operatorhub` and `validate-operatorhub-release` Make targets remain available only for maintaining existing version 1.x metadata. + +## Retire the OperatorHub listings + +A notice in this repository does not update the catalogs consumed by OperatorHub or OpenShift. After publishing 2.0.0, submit maintainer-authorized removal pull requests for `operators/ibmcloud-operator` in both catalog repositories: + +- [k8s-operatorhub/community-operators](https://github.com/k8s-operatorhub/community-operators/tree/main/operators/ibmcloud-operator) +- [redhat-openshift-ecosystem/community-operators-prod](https://github.com/redhat-openshift-ecosystem/community-operators-prod/tree/main/operators/ibmcloud-operator) + +The OpenShift package only targets historical OpenShift versions and is not present in current file-based catalogs. Do not add it to current catalogs solely to attach deprecation metadata. Removing the stale package sources is the established retirement path for operators that move to Helm. From e5fb01894befe9671e6fbd957d31c518a7ee5f03 Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Tue, 15 Sep 2026 12:10:33 +0200 Subject: [PATCH 3/9] fmt Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- README.md | 106 +- .../crds/ibmcloud.ibm.com_bindings.yaml | 817 ++++----- .../crds/ibmcloud.ibm.com_services.yaml | 1516 +++++++++-------- 3 files changed, 1269 insertions(+), 1170 deletions(-) diff --git a/README.md b/README.md index 56330a6a..47f81640 100644 --- a/README.md +++ b/README.md @@ -13,23 +13,24 @@ With the IBM Cloud Operator, you can provision and bind [IBM public cloud servic ## Table of content -* [Features](#features) -* [Upgrading the operator](#upgrading-the-operator) -* [Prerequisites](#prerequisites) -* [Setting up the operator](#setting-up-the-operator) - * [Using a service ID](#using-a-service-id) - * [Legacy installation methods](#legacy-installation-methods) - * [Uninstalling the operator](#uninstalling-the-operator) -* [Using the IBM Cloud Operator](#using-the-ibm-cloud-operator) -* [Using separate IBM Cloud accounts](#using-separate-ibm-cloud-accounts) -* [Setting up a management namespace](#setting-up-a-management-namespace) -* [Reference documentation](#reference-documentation) - * [Service properties](#service-properties) - * [Binding properties](#binding-properties) - * [Account context in operator secret and configmap](#account-context-in-operator-secret-and-configmap) - * [Versions](#versions) -* [Contributing to the project](#contributing-to-the-project) -* [Troubleshooting](#troubleshooting) + +* [Features](#features) +* [Upgrading the operator](#upgrading-the-operator) +* [Prerequisites](#prerequisites) +* [Setting up the operator](#setting-up-the-operator) + * [Using a service ID](#using-a-service-id) + * [Legacy installation methods](#legacy-installation-methods) + * [Uninstalling the operator](#uninstalling-the-operator) +* [Using the IBM Cloud Operator](#using-the-ibm-cloud-operator) +* [Using separate IBM Cloud accounts](#using-separate-ibm-cloud-accounts) +* [Setting up a management namespace](#setting-up-a-management-namespace) +* [Reference documentation](#reference-documentation) + * [Service properties](#service-properties) + * [Binding properties](#binding-properties) + * [Account context in operator secret and configmap](#account-context-in-operator-secret-and-configmap) + * [Versions](#versions) +* [Contributing to the project](#contributing-to-the-project) +* [Troubleshooting](#troubleshooting) @@ -59,6 +60,7 @@ helm upgrade ibmcloud-operator \ OperatorHub and the `curl` installer are deprecated and will not publish version 2.0.0. See the [installation guide](docs/install.md) for migration instructions and the cross-namespace Binding credential change. ### Upgrading to version v0.3 or v1.0 + **IMPORTANT NOTICE:** v0.1 and v0.2 used a different naming scheme for secrets and configmaps. Before you update the IBM Cloud Operator, create secret and configmap resources with these names and copy the contents of your previous resources to the new resources. Then, the upgraded operator recognizes and continues to update the resources. Existing `Service` and `Binding` resources **do not** need modification for the upgrade. @@ -73,7 +75,6 @@ Existing `Service` and `Binding` resources **do not** need modification for the **Tip:** Forgot to update the secret and configmap names before upgrading? The operator will not take action on Service and Binding resources until the new secrets and configmaps have been created. Creating these after the upgrade will also work. - The OperatorHub catalog entry is deprecated, does not receive releases after version 1.x, and is scheduled for removal. Existing installations must migrate to Helm. ### Changelog @@ -86,31 +87,31 @@ For a list of recent changes, see the [releases page](https://github.com/IBM/clo ## Prerequisites -1. Have an [IBM Cloud account](https://cloud.ibm.com/registration). -2. Have a cluster that runs Kubernetes version 1.16 or later. -3. Install the required command line tools. - * [IBM Cloud CLI](https://cloud.ibm.com/docs/cli?topic=cloud-cli-getting-started) (`ibmcloud`) - * [Kubernetes CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl/) (`kubectl`) - * [Helm](https://helm.sh/docs/intro/install/) 3 or later (`helm`) -4. Log in to your IBM Cloud account from the CLI. +1. Have an [IBM Cloud account](https://cloud.ibm.com/registration). +2. Have a cluster that runs Kubernetes version 1.16 or later. +3. Install the required command line tools. + * [IBM Cloud CLI](https://cloud.ibm.com/docs/cli?topic=cloud-cli-getting-started) (`ibmcloud`) + * [Kubernetes CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl/) (`kubectl`) + * [Helm](https://helm.sh/docs/intro/install/) 3 or later (`helm`) +4. Log in to your IBM Cloud account from the CLI. ```bash ibmcloud login ``` -5. Target the appropriate resource group (`-g`) and default region (`-r`) for provisioning services: +5. Target the appropriate resource group (`-g`) and default region (`-r`) for provisioning services: ```bash ibmcloud target -g default -r us-south ``` -6. If you also want to provision Cloud Foundry services, target the appropriate `org` and `space` (`--cf`). +6. If you also want to provision Cloud Foundry services, target the appropriate `org` and `space` (`--cf`). ```bash ibmcloud target --cf ``` -7. Set the Kubernetes context of your CLI to your cluster so that you can run `kubectl` commands. For example, if your cluster runs OpenShift, use the `oc login` command. +7. Set the Kubernetes context of your CLI to your cluster so that you can run `kubectl` commands. For example, if your cluster runs OpenShift, use the `oc login` command. @@ -147,37 +148,37 @@ The chart does not accept or store IBM Cloud API keys. Create the account Secret Use a service ID API key to control the operator's IBM Cloud permissions independently from a particular user. For more information, see the [IBM Cloud docs](https://cloud.ibm.com/docs/account?topic=account-serviceids). -1. Create a service ID in IBM Cloud IAM. If possible, do not use spaces in the names for your IAM credentials. When you use the operator binding feature, any spaces are replaced with underscores. +1. Create a service ID in IBM Cloud IAM. If possible, do not use spaces in the names for your IAM credentials. When you use the operator binding feature, any spaces are replaced with underscores. ```bash ibmcloud iam service-id-create serviceid-ico -d service-ID-for-ibm-cloud-operator ``` -2. Assign the service ID access to the required permissions to work with the IBM Cloud services that you want the operator to manage. The required permissions vary with each IBM Cloud service. You can also scope an access policy to different regions or resource groups. For example, the following command grants the service ID the **Administrator** platform role in the default resource group in the US South (Dallas) region. For more information, see the [IBM Cloud docs](https://cloud.ibm.com/docs/account?topic=account-userroles). +2. Assign the service ID access to the required permissions to work with the IBM Cloud services that you want the operator to manage. The required permissions vary with each IBM Cloud service. You can also scope an access policy to different regions or resource groups. For example, the following command grants the service ID the **Administrator** platform role in the default resource group in the US South (Dallas) region. For more information, see the [IBM Cloud docs](https://cloud.ibm.com/docs/account?topic=account-userroles). ```bash ibmcloud iam service-policy-create serviceid-ico --roles Administrator --resource-group-name default --region us-south ``` -3. Create an API key for the service ID. +3. Create an API key for the service ID. ```bash ibmcloud iam service-api-key-create apikey-ico serviceid-ico -d api-key-for-ibm-cloud-operator ``` -4. Set the API key of the service ID as your CLI environment variable. Use this value when creating the namespace's `ibmcloud-operator-secret`, as described in the [installation guide](docs/install.md). +4. Set the API key of the service ID as your CLI environment variable. Use this value when creating the namespace's `ibmcloud-operator-secret`, as described in the [installation guide](docs/install.md). ```bash export IBMCLOUD_API_KEY= ``` -5. Confirm that the API key environment variable is set in your CLI. +5. Confirm that the API key environment variable is set in your CLI. ```bash echo $IBMCLOUD_API_KEY ``` -6. Follow the [prerequisite steps](README.md#prerequisites) to log in to the IBM Cloud account that owns the service ID. +6. Follow the [prerequisite steps](README.md#prerequisites) to log in to the IBM Cloud account that owns the service ID. [Back to top](#ibm-cloud-operator) @@ -212,9 +213,9 @@ To use the IBM Cloud Operator, create a service instance and then bind the servi #### Step 1: Creating a service instance -1. To create an instance of an IBM public cloud service, first create a `Service` custom resource file. For more options, see the [Service properties](README.md#service-properties) reference doc. - * `` is the IBM Cloud service that you want to create. To list IBM Cloud services, run `ibmcloud catalog service-marketplace` and use the **Name** value from the output. - * `` is the plan for the IBM Cloud service that you want to create, such as `free` or `standard`. To list available plans, run `ibmcloud catalog service | grep plan`. +1. To create an instance of an IBM public cloud service, first create a `Service` custom resource file. For more options, see the [Service properties](README.md#service-properties) reference doc. + * `` is the IBM Cloud service that you want to create. To list IBM Cloud services, run `ibmcloud catalog service-marketplace` and use the **Name** value from the output. + * `` is the plan for the IBM Cloud service that you want to create, such as `free` or `standard`. To list available plans, run `ibmcloud catalog service | grep plan`. ```yaml apiVersion: ibmcloud.ibm.com/v1 @@ -226,13 +227,13 @@ To use the IBM Cloud Operator, create a service instance and then bind the servi serviceClass: ``` -2. Create the service instance in your cluster. +2. Create the service instance in your cluster. ```bash kubectl apply -f filepath/myservice.yaml ``` -3. Check that your service status is **Online** in your cluster. +3. Check that your service status is **Online** in your cluster. ```bash kubectl get services.ibmcloud @@ -240,7 +241,7 @@ To use the IBM Cloud Operator, create a service instance and then bind the servi myservice Online 12s ``` -4. Verify that your service instance is created in IBM Cloud. +4. Verify that your service instance is created in IBM Cloud. ```bash ibmcloud resource service-instances | grep myservice @@ -248,7 +249,7 @@ To use the IBM Cloud Operator, create a service instance and then bind the servi #### Step 2: Binding the service instance -1. To bind your service to the cluster so that your apps can use the service, create a `Binding` custom resource, where the `serviceName` field is the name of the `Service` custom resource that you previously created. For more options, see [Binding properties](README.md#binding-properties). +1. To bind your service to the cluster so that your apps can use the service, create a `Binding` custom resource, where the `serviceName` field is the name of the `Service` custom resource that you previously created. For more options, see [Binding properties](README.md#binding-properties). ```yaml apiVersion: ibmcloud.ibm.com/v1 @@ -259,13 +260,13 @@ To use the IBM Cloud Operator, create a service instance and then bind the servi serviceName: myservice ``` -2. Create the binding in your cluster. +2. Create the binding in your cluster. ```bash kubectl apply -f filepath/mybinding.yaml ``` -3. Check that your service status is **Online**. +3. Check that your service status is **Online**. ```bash kubectl get bindings.ibmcloud @@ -273,7 +274,7 @@ To use the IBM Cloud Operator, create a service instance and then bind the servi mybinding Online 25s ``` -4. Check that a secret of the same name as your binding is created. The secret contains the service credentials that apps in your cluster can use to access the service. +4. Check that a secret of the same name as your binding is created. The secret contains the service credentials that apps in your cluster can use to access the service. ```bash kubectl get secrets @@ -290,10 +291,10 @@ You can provision IBM Cloud services in separate IBM Cloud accounts from the sam **Tip**: Just want to use a different account one time and don't want to manage a bunch of namespaces? You can also specify a different account in the individual [service configuration](#service-properties), by overriding the default [account context](#account-context-in-operator-secret-and-configmap). -1. Get the IBM Cloud account details, including account ID, Cloud Foundry org and space, resource group, region, and API key credentials. -2. Edit or replace the `ibmcloud-operator-secret` secret in the Kubernetes namespace that you want to use to create services in the account. -3. Edit or replace the `ibmcloud-operator-defaults` configmap in the Kubernetes namespace that you want to use to create services in the account. -4. Optional: [Set up a management namespace](#setting-up-a-management-namespace) so that cluster users with access across namespaces cannot see the API keys for the different IBM Cloud accounts. +1. Get the IBM Cloud account details, including account ID, Cloud Foundry org and space, resource group, region, and API key credentials. +2. Edit or replace the `ibmcloud-operator-secret` secret in the Kubernetes namespace that you want to use to create services in the account. +3. Edit or replace the `ibmcloud-operator-defaults` configmap in the Kubernetes namespace that you want to use to create services in the account. +4. Optional: [Set up a management namespace](#setting-up-a-management-namespace) so that cluster users with access across namespaces cannot see the API keys for the different IBM Cloud accounts. [Back to top](#ibm-cloud-operator) @@ -301,13 +302,13 @@ You can provision IBM Cloud services in separate IBM Cloud accounts from the sam By default, the API key credentials and other IBM Cloud account information are stored in a secret and a configmap within each namespace where you create IBM Cloud Operator service and binding custom resources. However, you might want to hide access to this information from cluster users in the namespace. For example, you might have multiple IBM Cloud accounts that you do not want cluster users in different namespaces to know about. -1. Create a management namespace that is named `safe`. +1. Create a management namespace that is named `safe`. ```bash kubectl create namespace safe ``` -2. In the namespace where the IBM Cloud Operator runs, create an `ibmcloud-operator-config` configmap that points to the `safe` namespace. +2. In the namespace where the IBM Cloud Operator runs, create an `ibmcloud-operator-config` configmap that points to the `safe` namespace. ```bash cat <-ibmcloud-operator-secret @@ -341,7 +342,7 @@ By default, the API key credentials and other IBM Cloud account information are prod-ibmcloud-operator-defaults ``` -4. Delete the `ibmcloud-operator-secret` secrets and `ibmcloud-operator-defaults` configmaps in the other Kubernetes namespaces. +4. Delete the `ibmcloud-operator-secret` secrets and `ibmcloud-operator-defaults` configmaps in the other Kubernetes namespaces. [Back to top](#ibm-cloud-operator) @@ -381,6 +382,7 @@ A `Binding` custom resources includes the properties in the following table. For [Back to top](#ibm-cloud-operator) ### Account context in operator secret and configmap + The IBM Cloud Operator needs an account context, which indicates the API key and the details of the IBM Cloud account to be used for creating services. The API key is stored in a `ibmcloud-operator-secret` secret that is created when the IBM Cloud Operator is installed. Account details such as the account ID, Cloud Foundry org and space, resource group, and region are stored in a `ibmcloud-operator-defaults` configmap. When you create an IBM Cloud Operator service or binding resource, the operator checks the namespace that you create the resource in for the secret and configmap. If the the operator does not find the secret and configmap, it checks its own namespace for a configmap that points to a [management namespace](#setting-up-a-management-namespace). Then, the operator checks the management namespace for `-ibmcloud-operator-secret` secrets and `-ibmcloud-operator-defaults` configmaps. If no management namespace exists, the operator checks the `default` namespace for the `ibmcloud-operator-secret` secret and `ibmcloud-operator-defaults` configmap. diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml index ef88b4b7..cd35122b 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml @@ -14,402 +14,437 @@ spec: singular: binding scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: + Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Binding is the Schema for the bindings API - 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: BindingSpec defines the desired state of Binding - properties: - alias: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: + SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: + ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: + SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: + Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: + SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: + ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: + SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Binding is the Schema for the bindings API + 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: BindingSpec defines the desired state of Binding + properties: + alias: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - role: - type: string - secretName: - type: string - serviceName: - type: string - serviceNamespace: - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - type: string - keyInstanceId: - type: string - message: - type: string - secretName: - type: string - state: - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + type: string + secretName: + type: string + serviceName: + type: string + serviceNamespace: + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + type: string + keyInstanceId: + type: string + message: + type: string + secretName: + type: string + state: + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml index bb686dad..dc537c9e 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml @@ -14,745 +14,807 @@ spec: singular: service scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Service is the Schema for the services API - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - type: string - parameters: - items: - description: Param represents a key-value pair + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - type: string - externalName: - type: string - generation: - format: int64 - type: integer - instanceId: - type: string - message: - type: string - parameters: - items: - description: Param represents a key-value pair + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Service is the Schema for the services API + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - state: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} + dashboardURL: + type: string + externalName: + type: string + generation: + format: int64 + type: integer + instanceId: + type: string + message: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + state: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" From 66c6cbd252ead3002c600fe3cd724705bd9cd642 Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Mon, 5 Oct 2026 14:13:14 +0200 Subject: [PATCH 4/9] Fix Helm release validation and monitoring Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- README.md | 2 +- .../crds/ibmcloud.ibm.com_bindings.yaml | 817 +++++---- .../crds/ibmcloud.ibm.com_services.yaml | 1516 ++++++++--------- .../templates/metrics.yaml.tpl | 4 + controllers/suite_test.go | 25 +- docs/install.md | 2 +- 6 files changed, 1148 insertions(+), 1218 deletions(-) diff --git a/README.md b/README.md index 47f81640..f02a8487 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ For a list of recent changes, see the [releases page](https://github.com/IBM/clo 3. Install the required command line tools. * [IBM Cloud CLI](https://cloud.ibm.com/docs/cli?topic=cloud-cli-getting-started) (`ibmcloud`) * [Kubernetes CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl/) (`kubectl`) - * [Helm](https://helm.sh/docs/intro/install/) 3 or later (`helm`) + * [Helm](https://helm.sh/docs/intro/install/) 3.8 or later (`helm`) 4. Log in to your IBM Cloud account from the CLI. ```bash diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml index cd35122b..ef88b4b7 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml @@ -14,437 +14,402 @@ spec: singular: binding scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: - Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: - SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: - ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: - SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: - Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: - SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: - ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: - SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Binding is the Schema for the bindings API - 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: BindingSpec defines the desired state of Binding - properties: - alias: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Binding is the Schema for the bindings API + 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: BindingSpec defines the desired state of Binding + properties: + alias: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - required: - - name - type: object - type: array - role: - type: string - secretName: - type: string - serviceName: - type: string - serviceNamespace: - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - type: string - keyInstanceId: - type: string - message: - type: string - secretName: - type: string - state: - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + type: string + secretName: + type: string + serviceName: + type: string + serviceNamespace: + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + type: string + keyInstanceId: + type: string + message: + type: string + secretName: + type: string + state: + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml index dc537c9e..bb686dad 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml @@ -14,807 +14,745 @@ spec: singular: service scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: - ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) + attributes: + additionalProperties: type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: - ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: - ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: - ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: - ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: - ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string + type: object + required: + - name type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: - ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: - ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Service is the Schema for the services API - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + attributes: + additionalProperties: type: object - required: - - name - type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name type: object - dashboardURL: - type: string - externalName: - type: string - generation: - format: int64 - type: integer - instanceId: - type: string - message: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Service is the Schema for the services API + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + type: string + externalName: + type: string + generation: + format: int64 + type: integer + instanceId: + type: string + message: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - required: - - name - type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - state: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + state: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" diff --git a/charts/ibmcloud-operator/templates/metrics.yaml.tpl b/charts/ibmcloud-operator/templates/metrics.yaml.tpl index 000ed17a..9f91d776 100644 --- a/charts/ibmcloud-operator/templates/metrics.yaml.tpl +++ b/charts/ibmcloud-operator/templates/metrics.yaml.tpl @@ -33,6 +33,10 @@ spec: endpoints: - path: /metrics port: https + scheme: https + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + tlsConfig: + insecureSkipVerify: true selector: matchLabels: {{- include "ibmcloud-operator.selectorLabels" . | nindent 6 }} diff --git a/controllers/suite_test.go b/controllers/suite_test.go index cdcd7cd2..20f01c5a 100644 --- a/controllers/suite_test.go +++ b/controllers/suite_test.go @@ -22,6 +22,7 @@ import ( "fmt" "net/http" "os" + "os/exec" "path/filepath" "strings" "testing" @@ -98,13 +99,35 @@ func envtestAvailable() bool { assets = "/usr/local/kubebuilder/bin" } for _, binary := range []string{"etcd", "kube-apiserver"} { - if _, err := os.Stat(filepath.Join(assets, binary)); err != nil { + if _, err := exec.LookPath(filepath.Join(assets, binary)); err != nil { return false } } return true } +func TestEnvtestAvailable(t *testing.T) { + assets := t.TempDir() + t.Setenv("KUBEBUILDER_ASSETS", assets) + + for _, binary := range []string{"etcd", "kube-apiserver"} { + path := filepath.Join(assets, binary) + if err := os.WriteFile(path, nil, 0755); err != nil { + t.Fatal(err) + } + } + if !envtestAvailable() { + t.Fatal("expected executable envtest binaries to be available") + } + + if err := os.Chmod(filepath.Join(assets, "etcd"), 0644); err != nil { + t.Fatal(err) + } + if envtestAvailable() { + t.Fatal("expected non-executable envtest binary to be unavailable") + } +} + func zapEncoderConfig() zapcore.EncoderConfig { encCfg := zap.NewDevelopmentEncoderConfig() // hide most of logger name, since zap.AddCaller includes line numbers diff --git a/docs/install.md b/docs/install.md index 1fb61c79..7a9c3d70 100644 --- a/docs/install.md +++ b/docs/install.md @@ -5,7 +5,7 @@ Helm is the supported installation method for IBM Cloud Operator 2.0.0 and later ## Prerequisites - Kubernetes 1.16 or later -- Helm 3 or later +- Helm 3.8 or later - An IBM Cloud API key with access to the services the operator will manage ## Install the operator From ec1ff39d894921452440a0bcf30f3eeb1bb82300 Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Mon, 5 Oct 2026 14:47:21 +0200 Subject: [PATCH 5/9] fmt Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- .../crds/ibmcloud.ibm.com_bindings.yaml | 817 ++++----- .../crds/ibmcloud.ibm.com_services.yaml | 1516 +++++++++-------- 2 files changed, 1215 insertions(+), 1118 deletions(-) diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml index ef88b4b7..cd35122b 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml @@ -14,402 +14,437 @@ spec: singular: binding scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: + Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Binding is the Schema for the bindings API - 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: BindingSpec defines the desired state of Binding - properties: - alias: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: + SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: + ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: + SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: + Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: + SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: + ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: + SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Binding is the Schema for the bindings API + 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: BindingSpec defines the desired state of Binding + properties: + alias: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - role: - type: string - secretName: - type: string - serviceName: - type: string - serviceNamespace: - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - type: string - keyInstanceId: - type: string - message: - type: string - secretName: - type: string - state: - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + type: string + secretName: + type: string + serviceName: + type: string + serviceNamespace: + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + type: string + keyInstanceId: + type: string + message: + type: string + secretName: + type: string + state: + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml index bb686dad..dc537c9e 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml @@ -14,745 +14,807 @@ spec: singular: service scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Service is the Schema for the services API - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - type: string - parameters: - items: - description: Param represents a key-value pair + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - type: string - externalName: - type: string - generation: - format: int64 - type: integer - instanceId: - type: string - message: - type: string - parameters: - items: - description: Param represents a key-value pair + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Service is the Schema for the services API + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - state: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} + dashboardURL: + type: string + externalName: + type: string + generation: + format: int64 + type: integer + instanceId: + type: string + message: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + state: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" From 050a31a5c9eda548e4383c76d4405a5f1a9981b9 Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Tue, 13 Oct 2026 18:07:36 +0200 Subject: [PATCH 6/9] Restore generated Helm CRDs Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- .../crds/ibmcloud.ibm.com_bindings.yaml | 817 +++++---- .../crds/ibmcloud.ibm.com_services.yaml | 1516 ++++++++--------- 2 files changed, 1118 insertions(+), 1215 deletions(-) diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml index cd35122b..ef88b4b7 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml @@ -14,437 +14,402 @@ spec: singular: binding scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: - Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: - SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: - ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: - SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: - Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: - SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: - ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: - SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Binding is the Schema for the bindings API - 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: BindingSpec defines the desired state of Binding - properties: - alias: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Binding is the Schema for the bindings API + 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: BindingSpec defines the desired state of Binding + properties: + alias: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - required: - - name - type: object - type: array - role: - type: string - secretName: - type: string - serviceName: - type: string - serviceNamespace: - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - type: string - keyInstanceId: - type: string - message: - type: string - secretName: - type: string - state: - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + type: string + secretName: + type: string + serviceName: + type: string + serviceNamespace: + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + type: string + keyInstanceId: + type: string + message: + type: string + secretName: + type: string + state: + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml index dc537c9e..bb686dad 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml @@ -14,807 +14,745 @@ spec: singular: service scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: - ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) + attributes: + additionalProperties: type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: - ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: - ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: - ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: - ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: - ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string + type: object + required: + - name type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: - ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: - ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Service is the Schema for the services API - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + attributes: + additionalProperties: type: object - required: - - name - type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: - ResourceContext defines the CloudFoundry context and - resource group + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name type: object - dashboardURL: - type: string - externalName: - type: string - generation: - format: int64 - type: integer - instanceId: - type: string - message: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key type: object - description: - A parameter may have attributes (e.g. message hub - topic might have partitions) + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Service is the Schema for the services API + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: - Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: - The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: - "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?" - type: string - optional: - description: - Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + type: string + externalName: + type: string + generation: + format: int64 + type: integer + instanceId: + type: string + message: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - required: - - name - type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - state: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} + description: A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + state: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" From d43ae1a87bb8406b19b0a876113f748c271f2937 Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Tue, 13 Oct 2026 18:13:36 +0200 Subject: [PATCH 7/9] fmt Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- .../crds/ibmcloud.ibm.com_bindings.yaml | 817 ++++----- .../crds/ibmcloud.ibm.com_services.yaml | 1516 +++++++++-------- 2 files changed, 1215 insertions(+), 1118 deletions(-) diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml index ef88b4b7..cd35122b 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_bindings.yaml @@ -14,402 +14,437 @@ spec: singular: binding scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: + Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Binding is an instance of a service binding resource on IBM Cloud. - A Binding creates a secret with the service instance credentials. - 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: BindingSpec defines the desired state of Binding - properties: - alias: - description: Alias is the name for the credentials to be aliased - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - role: - description: Role is the role for the credentials - type: string - secretName: - description: SecretName is the name of the secret where credentials - will be stored - type: string - serviceName: - description: ServiceClass is the name of the service resource to bind - type: string - serviceNamespace: - description: ServiceNamespace is the namespace of the service resource - to bind - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - keyInstanceId: - description: KeyInstanceID is the key instance ID for the credentials - type: string - message: - description: Message is a detailed message on current status - type: string - secretName: - description: SecretName is the name of the generated secret with service - credentials - type: string - state: - description: State is a short name for the current status - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Binding is the Schema for the bindings API - 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: BindingSpec defines the desired state of Binding - properties: - alias: - type: string - parameters: - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: + SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: + ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: + SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: + Binding is an instance of a service binding resource on IBM Cloud. + A Binding creates a secret with the service instance credentials. + 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: BindingSpec defines the desired state of Binding + properties: + alias: + description: Alias is the name for the credentials to be aliased + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + description: Role is the role for the credentials + type: string + secretName: + description: + SecretName is the name of the secret where credentials + will be stored + type: string + serviceName: + description: ServiceClass is the name of the service resource to bind + type: string + serviceNamespace: + description: + ServiceNamespace is the namespace of the service resource + to bind + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + keyInstanceId: + description: KeyInstanceID is the key instance ID for the credentials + type: string + message: + description: Message is a detailed message on current status + type: string + secretName: + description: + SecretName is the name of the generated secret with service + credentials + type: string + state: + description: State is a short name for the current status + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Binding is the Schema for the bindings API + 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: BindingSpec defines the desired state of Binding + properties: + alias: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - role: - type: string - secretName: - type: string - serviceName: - type: string - serviceNamespace: - type: string - required: - - serviceName - type: object - status: - description: BindingStatus defines the observed state of Binding - properties: - generation: - format: int64 - type: integer - instanceId: - type: string - keyInstanceId: - type: string - message: - type: string - secretName: - type: string - state: - type: string - type: object - type: object - served: true - storage: false - subresources: - status: {} + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + role: + type: string + secretName: + type: string + serviceName: + type: string + serviceNamespace: + type: string + required: + - serviceName + type: object + status: + description: BindingStatus defines the observed state of Binding + properties: + generation: + format: int64 + type: integer + instanceId: + type: string + keyInstanceId: + type: string + message: + type: string + secretName: + type: string + state: + type: string + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" diff --git a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml index bb686dad..dc537c9e 100644 --- a/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml +++ b/charts/ibmcloud-operator/crds/ibmcloud.ibm.com_services.yaml @@ -14,745 +14,807 @@ spec: singular: service scope: Namespaced versions: - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: true - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1beta1 - schema: - openAPIV3Schema: - description: Service is an instance of a Service resource on IBM Cloud. - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - description: DashboardURL is the dashboard URL for the service - type: string - externalName: - description: ExternalName is the name for the service as it appears - on IBM Cloud - type: string - generation: - format: int64 - type: integer - instanceId: - description: InstanceID is the instance ID for the service - type: string - message: - description: Message is a detailed message on current status - type: string - parameters: - description: Parameters pass configuration to the service during creation - items: - description: Param represents a key-value pair - properties: - attributes: - additionalProperties: + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - plan: - description: Plan for the service from the IBM Cloud Catalog - type: string - serviceClass: - description: ServiceClass is the name of the service from the IBM - Cloud Catalog - type: string - serviceClassType: - description: ServiceClassType is set to CF if the service is CloundFoundry - type: string - state: - description: State is a short name for the current status - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} - - additionalPrinterColumns: - - jsonPath: .status.state - name: Status - type: string - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1alpha1 - schema: - openAPIV3Schema: - description: Service is the Schema for the services API - 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: ServiceSpec defines the desired state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - externalName: - type: string - parameters: - items: - description: Param represents a key-value pair + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: - type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - required: - - name + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - type: object - status: - description: ServiceStatus defines the observed state of Service - properties: - context: - description: ResourceContext defines the CloudFoundry context and - resource group - properties: - org: - type: string - region: - type: string - resourcegroup: - type: string - resourcegroupid: - type: string - resourcelocation: - type: string - space: - type: string - user: - type: string - type: object - dashboardURL: - type: string - externalName: - type: string - generation: - format: int64 - type: integer - instanceId: - type: string - message: - type: string - parameters: - items: - description: Param represents a key-value pair + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + schema: + openAPIV3Schema: + description: Service is an instance of a Service resource on IBM Cloud. + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group properties: - attributes: - additionalProperties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object type: object - description: A parameter may have attributes (e.g. message hub - topic might have partitions) - type: object - name: - description: Name representing the key. - type: string - value: - description: Defaults to null. - x-kubernetes-preserve-unknown-fields: true - valueFrom: - description: Source for the value. Cannot be used if value is - not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + dashboardURL: + description: DashboardURL is the dashboard URL for the service + type: string + externalName: + description: + ExternalName is the name for the service as it appears + on IBM Cloud + type: string + generation: + format: int64 + type: integer + instanceId: + description: InstanceID is the instance ID for the service + type: string + message: + description: Message is a detailed message on current status + type: string + parameters: + description: Parameters pass configuration to the service during creation + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - secretKeyRef: - description: Selects a key of a secret in the resource namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + description: Plan for the service from the IBM Cloud Catalog + type: string + serviceClass: + description: + ServiceClass is the name of the service from the IBM + Cloud Catalog + type: string + serviceClassType: + description: ServiceClassType is set to CF if the service is CloundFoundry + type: string + state: + description: State is a short name for the current status + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} + - additionalPrinterColumns: + - jsonPath: .status.state + name: Status + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1alpha1 + schema: + openAPIV3Schema: + description: Service is the Schema for the services API + 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: ServiceSpec defines the desired state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string + type: object + externalName: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: type: object - type: object - required: - - name + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + type: object + status: + description: ServiceStatus defines the observed state of Service + properties: + context: + description: + ResourceContext defines the CloudFoundry context and + resource group + properties: + org: + type: string + region: + type: string + resourcegroup: + type: string + resourcegroupid: + type: string + resourcelocation: + type: string + space: + type: string + user: + type: string type: object - type: array - plan: - type: string - serviceClass: - type: string - serviceClassType: - type: string - state: - type: string - tags: - items: - type: string - type: array - required: - - plan - - serviceClass - - serviceClassType - type: object - type: object - served: true - storage: false - subresources: - status: {} + dashboardURL: + type: string + externalName: + type: string + generation: + format: int64 + type: integer + instanceId: + type: string + message: + type: string + parameters: + items: + description: Param represents a key-value pair + properties: + attributes: + additionalProperties: + type: object + description: + A parameter may have attributes (e.g. message hub + topic might have partitions) + type: object + name: + description: Name representing the key. + type: string + value: + description: Defaults to null. + x-kubernetes-preserve-unknown-fields: true + valueFrom: + description: + Source for the value. Cannot be used if value is + not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + secretKeyRef: + description: Selects a key of a secret in the resource namespace + properties: + key: + description: + The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: + "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?" + type: string + optional: + description: + Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + type: object + required: + - name + type: object + type: array + plan: + type: string + serviceClass: + type: string + serviceClassType: + type: string + state: + type: string + tags: + items: + type: string + type: array + required: + - plan + - serviceClass + - serviceClassType + type: object + type: object + served: true + storage: false + subresources: + status: {} status: acceptedNames: kind: "" From 1759a485f3dc5ae4ce7265c63e0b7d846dce6a10 Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Tue, 13 Oct 2026 18:35:20 +0200 Subject: [PATCH 8/9] Compare Helm CRDs by YAML content Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- Makefile | 4 +-- internal/cmd/yamlcmp/main.go | 51 +++++++++++++++++++++++++++++++ internal/cmd/yamlcmp/main_test.go | 36 ++++++++++++++++++++++ 3 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 internal/cmd/yamlcmp/main.go create mode 100644 internal/cmd/yamlcmp/main_test.go diff --git a/Makefile b/Makefile index 3d85009b..e9f593a9 100644 --- a/Makefile +++ b/Makefile @@ -184,8 +184,8 @@ out: .PHONY: helm-crds helm-crds: - cmp config/crd/bases/ibmcloud.ibm.com_bindings.yaml $(HELM_CHART)/crds/ibmcloud.ibm.com_bindings.yaml - cmp config/crd/bases/ibmcloud.ibm.com_services.yaml $(HELM_CHART)/crds/ibmcloud.ibm.com_services.yaml + go run ./internal/cmd/yamlcmp config/crd/bases/ibmcloud.ibm.com_bindings.yaml $(HELM_CHART)/crds/ibmcloud.ibm.com_bindings.yaml + go run ./internal/cmd/yamlcmp config/crd/bases/ibmcloud.ibm.com_services.yaml $(HELM_CHART)/crds/ibmcloud.ibm.com_services.yaml .PHONY: helm-lint helm-lint: helm-crds diff --git a/internal/cmd/yamlcmp/main.go b/internal/cmd/yamlcmp/main.go new file mode 100644 index 00000000..1a40acd7 --- /dev/null +++ b/internal/cmd/yamlcmp/main.go @@ -0,0 +1,51 @@ +package main + +import ( + "fmt" + "log" + "os" + "reflect" + + "gopkg.in/yaml.v2" +) + +func main() { + if err := run(os.Args[1:]); err != nil { + log.SetFlags(0) + log.Print(err) + os.Exit(1) + } +} + +func run(args []string) error { + if len(args) != 2 { + return fmt.Errorf("usage: yamlcmp FILE FILE") + } + + left, err := readYAML(args[0]) + if err != nil { + return err + } + right, err := readYAML(args[1]) + if err != nil { + return err + } + + if !reflect.DeepEqual(left, right) { + return fmt.Errorf("%s and %s contain different YAML values", args[0], args[1]) + } + return nil +} + +func readYAML(filename string) (interface{}, error) { + contents, err := os.ReadFile(filename) // #nosec G304 -- filenames are command-line arguments + if err != nil { + return nil, err + } + + var value interface{} + if err := yaml.UnmarshalStrict(contents, &value); err != nil { + return nil, fmt.Errorf("parse %s: %w", filename, err) + } + return value, nil +} diff --git a/internal/cmd/yamlcmp/main_test.go b/internal/cmd/yamlcmp/main_test.go new file mode 100644 index 00000000..d70f3486 --- /dev/null +++ b/internal/cmd/yamlcmp/main_test.go @@ -0,0 +1,36 @@ +package main + +import ( + "os" + "path/filepath" + "strings" + "testing" +) + +func TestRunAcceptsEquivalentYAMLFormatting(t *testing.T) { + left := writeTestFile(t, "left.yaml", "items:\n- name: example\n description: 'two words'\n") + right := writeTestFile(t, "right.yaml", "items:\n - name: example\n description: two words\n") + + if err := run([]string{left, right}); err != nil { + t.Fatal(err) + } +} + +func TestRunRejectsDifferentYAMLValues(t *testing.T) { + left := writeTestFile(t, "left.yaml", "value: one\n") + right := writeTestFile(t, "right.yaml", "value: two\n") + + err := run([]string{left, right}) + if err == nil || !strings.Contains(err.Error(), "contain different YAML values") { + t.Fatalf("expected different-values error, got %v", err) + } +} + +func writeTestFile(t *testing.T, name, contents string) string { + t.Helper() + filename := filepath.Join(t.TempDir(), name) + if err := os.WriteFile(filename, []byte(contents), 0600); err != nil { + t.Fatal(err) + } + return filename +} From 0166c44a25658b03f7a75f823bb598a086100cab Mon Sep 17 00:00:00 2001 From: bevicted <170766675+bevicted@users.noreply.github.com> Date: Thu, 22 Oct 2026 07:20:54 +0200 Subject: [PATCH 9/9] Fix Helm RBAC proxy image repository Signed-off-by: bevicted <170766675+bevicted@users.noreply.github.com> --- charts/ibmcloud-operator/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/ibmcloud-operator/values.yaml b/charts/ibmcloud-operator/values.yaml index 39aef3a1..dde00996 100644 --- a/charts/ibmcloud-operator/values.yaml +++ b/charts/ibmcloud-operator/values.yaml @@ -28,7 +28,7 @@ resources: metrics: proxy: image: - repository: gcr.io/kubebuilder/kube-rbac-proxy + repository: quay.io/brancz/kube-rbac-proxy tag: v0.5.0 pullPolicy: IfNotPresent service: