diff --git a/operators/pulsar-resources-operator/0.6.5/bundle.Dockerfile b/operators/pulsar-resources-operator/0.6.5/bundle.Dockerfile new file mode 100644 index 00000000000..9cc4042d586 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/bundle.Dockerfile @@ -0,0 +1,21 @@ +FROM scratch + +# Core bundle labels. +LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 +LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ +LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ +LABEL operators.operatorframework.io.bundle.package.v1=pulsar-resources-operator +LABEL operators.operatorframework.io.bundle.channels.v1=alpha,beta,stable +LABEL operators.operatorframework.io.bundle.channel.default.v1=alpha +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.31.0 +LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 + +# Labels for testing. +LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1 +LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/ + +# Copy files to locations specified by labels. +COPY bundle/manifests /manifests/ +COPY bundle/metadata /metadata/ +COPY bundle/tests/scorecard /tests/scorecard/ diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-controller-manager-metrics-service_v1_service.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-controller-manager-metrics-service_v1_service.yaml new file mode 100644 index 00000000000..5f429958c54 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-controller-manager-metrics-service_v1_service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + control-plane: controller-manager + name: pulsar-resources-operator-controller-manager-metrics-service +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-manager-config_v1_configmap.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-manager-config_v1_configmap.yaml new file mode 100644 index 00000000000..b0010382a50 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-manager-config_v1_configmap.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +data: + controller_manager_config.yaml: | + # Copyright 2024 StreamNative + # + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. + # You may obtain a copy of the License at + # + # http://www.apache.org/licenses/LICENSE-2.0 + # + # Unless required by applicable law or agreed to in writing, software + # distributed under the License is distributed on an "AS IS" BASIS, + # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + # See the License for the specific language governing permissions and + # limitations under the License. + + apiVersion: controller-runtime.sigs.k8s.io/v1alpha1 + kind: ControllerManagerConfig + health: + healthProbeBindAddress: :8081 + metrics: + bindAddress: 127.0.0.1:8080 + webhook: + port: 9443 + leaderElection: + leaderElect: true + resourceName: ed4866ca.streamnative.io +kind: ConfigMap +metadata: + name: pulsar-resources-operator-manager-config diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 00000000000..aefabbcdb40 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml @@ -0,0 +1,10 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: pulsar-resources-operator-metrics-reader +rules: +- nonResourceURLs: + - /metrics + verbs: + - get diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator.clusterserviceversion.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..c30ad5855ec --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/pulsar-resources-operator.clusterserviceversion.yaml @@ -0,0 +1,707 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarConnection", + "metadata": { + "name": "pulsarconnection-sample", + "namespace": "pulsar" + }, + "spec": { + "adminServiceURL": "http://c-sn-platform-broker.pulsar.svc.cluster.local:8080", + "authentication": { + "token": { + "secretRef": { + "key": "brokerClientAuthenticationParameters", + "name": "c-sn-platform-vault-secret-env-injection" + } + } + } + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarGeoReplication", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "pulsar-resources-operator", + "app.kubernetes.io/instance": "pulsargeoreplication-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "pulsargeoreplication", + "app.kubernetes.io/part-of": "pulsar-resources-operator" + }, + "name": "pulsargeoreplication-sample" + }, + "spec": { + "connectionRef": { + "name": "local-pulsarconnection" + }, + "destinationConnectionRef": { + "name": "remote-pulsarconnection" + } + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarNamespace", + "metadata": { + "name": "pulsarnamespace-sample", + "namespace": "pulsar" + }, + "spec": { + "backlogQuotaLimitSize": "1Gi", + "backlogQuotaLimitTime": "2h", + "backlogQuotaRetentionPolicy": "producer_request_hold", + "bundles": 16, + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "maxConsumersPerSubscription": 4, + "maxConsumersPerTopic": 12, + "maxProducersPerTopic": 2, + "messageTTL": "1h", + "name": "tenant-one/testns", + "retentionSize": "2Gi", + "retentionTime": "20h" + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarPackage", + "metadata": { + "name": "pulsarpackage-sample", + "namespace": "pulsar" + }, + "spec": { + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "description": "test", + "fileURL": "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download\u0026filename=pulsar/pulsar-2.10.4/connectors/pulsar-io-file-2.10.4.nar", + "lifecyclePolicy": "CleanUpAfterDeletion", + "packageURL": "function://public/default/test@latest" + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarPermission", + "metadata": { + "name": "pulsarpermission-namespace", + "namespace": "pulsar" + }, + "spec": { + "actions": [ + "produce", + "consume" + ], + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "resourceName": "tenant-one/testns", + "resourceType": "namespace", + "roles": [ + "ironman" + ] + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarPermission", + "metadata": { + "name": "pulsarpermission-topic", + "namespace": "pulsar" + }, + "spec": { + "actions": [ + "produce", + "consume", + "functions" + ], + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "resourceName": "persistent://tenant-one/testns/topic123", + "resourceType": "topic", + "roles": [ + "superman" + ] + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarTenant", + "metadata": { + "name": "pulsartenant-sample", + "namespace": "pulsar" + }, + "spec": { + "adminRoles": [ + "admin", + "ops", + "devops" + ], + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "name": "tenant-one" + } + }, + { + "apiVersion": "resource.streamnative.io/v1alpha1", + "kind": "PulsarTopic", + "metadata": { + "name": "pulsartopic-sample", + "namespace": "pulsar" + }, + "spec": { + "connectionRef": { + "name": "pulsarconnection-sample" + }, + "lifecyclePolicy": "CleanUpAfterDeletion", + "maxConsumers": 9, + "maxProducers": 4, + "messageTTL": "1h", + "name": "persistent://tenant-one/testns/topic123" + } + } + ] + capabilities: Auto Pilot + categories: Streaming & Messaging + containerImage: olm.streamnative.io/streamnativeio/pulsar-resources-operator:v0.6.5 + createdAt: "2024-12-05T06:55:35Z" + description: Authored by StreamNative, this Pulsar Resources Operator manages + the Pulsar resources automatically using the manifest on Kubernetes. + features.operators.openshift.io/cnf: "false" + features.operators.openshift.io/cni: "false" + features.operators.openshift.io/csi: "false" + features.operators.openshift.io/disconnected: "true" + features.operators.openshift.io/fips-compliant: "false" + features.operators.openshift.io/proxy-aware: "false" + features.operators.openshift.io/tls-profiles: "false" + features.operators.openshift.io/token-auth-aws: "false" + features.operators.openshift.io/token-auth-azure: "false" + features.operators.openshift.io/token-auth-gcp: "false" + operators.openshift.io/valid-subscription: '["StreamNative Private Cloud License"]' + operators.operatorframework.io/builder: operator-sdk-v1.31.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + support: StreamNative, Inc. + name: pulsar-resources-operator.v0.6.5 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: PulsarConnection is the Schema for the pulsarconnections API + displayName: Pulsar Connection + kind: PulsarConnection + name: pulsarconnections.resource.streamnative.io + version: v1alpha1 + - description: PulsarFunction is the Schema for the pulsarfunctions API + displayName: Pulsar Function + kind: PulsarFunction + name: pulsarfunctions.resource.streamnative.io + version: v1alpha1 + - description: PulsarGeoReplication is the Schema for the pulsargeoreplications + API + displayName: Pulsar GeoReplication + kind: PulsarGeoReplication + name: pulsargeoreplications.resource.streamnative.io + version: v1alpha1 + - description: PulsarNamespace is the Schema for the pulsarnamespaces API + displayName: Pulsar Namespace + kind: PulsarNamespace + name: pulsarnamespaces.resource.streamnative.io + version: v1alpha1 + - kind: PulsarNSIsolationPolicy + name: pulsarnsisolationpolicies.resource.streamnative.io + version: v1alpha1 + - description: PulsarPackage is the Schema for the pulsarpackages API + displayName: Pulsar Package + kind: PulsarPackage + name: pulsarpackages.resource.streamnative.io + version: v1alpha1 + - description: PulsarPermission is the Schema for the pulsarpermissions API + displayName: Pulsar Permission + kind: PulsarPermission + name: pulsarpermissions.resource.streamnative.io + version: v1alpha1 + - description: PulsarSink is the Schema for the pulsarsinks API + displayName: Pulsar Sink + kind: PulsarSink + name: pulsarsinks.resource.streamnative.io + version: v1alpha1 + - description: PulsarSource is the Schema for the pulsarsources API + displayName: Pulsar Source + kind: PulsarSource + name: pulsarsources.resource.streamnative.io + version: v1alpha1 + - description: PulsarTenant is the Schema for the pulsartenants API + displayName: Pulsar Tenant + kind: PulsarTenant + name: pulsartenants.resource.streamnative.io + version: v1alpha1 + - description: PulsarTopic is the Schema for the pulsartopics API + displayName: Pulsar Topic + kind: PulsarTopic + name: pulsartopics.resource.streamnative.io + version: v1alpha1 + description: | + Authored by [StreamNative](https://streamnative.io), this Pulsar Resources Operator is a controller that manages the Pulsar resources automatically using the manifest on Kubernetes. Therefore, you can manage the Pulsar resources without the help of `pulsar-admin` or `pulsarctl` CLI tool. It is useful for initializing basic resources when creating a new Pulsar cluster. + displayName: Pulsar Resources Operator + icon: + - base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9Ijc2OCIgaGVpZ2h0PSI3NjgiPgo8cGF0aCBkPSJNMCAwIEMyNTMuNDQgMCA1MDYuODggMCA3NjggMCBDNzY4IDI1My40NCA3NjggNTA2Ljg4IDc2OCA3NjggQzUxNC41NiA3NjggMjYxLjEyIDc2OCAwIDc2OCBDMCA1MTQuNTYgMCAyNjEuMTIgMCAwIFogIiBmaWxsPSIjRkVGRUZFIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLDApIi8+CjxwYXRoIGQ9Ik0wIDAgQzYuMjYxOTA0MjkgMC4wMjUyOTg2IDEyLjUyMzgxOTMzIDAuMDI3Mzc3NzcgMTguNzg1NzY2ODQgMC4wMzIxMDE2MyBDMjkuOTMxNDgzODUgMC4wNDM3NTA0OSA0MS4wNzcwNjUzNSAwLjA3MjUwODUgNTIuMjIyNzIwOSAwLjExMDY3MjUgQzYyLjMzMjQ0ODU0IDAuMTQ1MTAyNDcgNzIuNDQyMTUxOTcgMC4xNjk5ODg0NyA4Mi41NTE5MjU5IDAuMTg1ODQ5MTkgQzgzLjIxOTg5MzM2IDAuMTg2OTAwMDggODMuODg3ODYwODMgMC4xODc5NTA5OCA4NC41NzYwNjk3MyAwLjE4OTAzMzcyIEM4Ny45MjgxNjI1MSAwLjE5NDI1NTExIDkxLjI4MDI1NTUxIDAuMTk5MzA5NjQgOTQuNjMyMzQ4NjYgMC4yMDQyODEzMyBDMTIyLjI5NzExMTkyIDAuMjQ1ODk4MzQgMTQ5Ljk2MTc0MTgyIDAuMzE2MDg2OTEgMTc3LjYyNjM4ODc5IDAuNDA1NTc1NzUgQzE3Ny42NDAzODA1NiAyLjk1NzE5MDA4IDE3Ny42NTA1NzQyMSA1LjUwODcyNjU1IDE3Ny42NTg2MTUzNSA4LjA2MDM2MDkxIEMxNzcuNjYyOTM1NzIgOC43NzcyMDU1NCAxNzcuNjY3MjU2MSA5LjQ5NDA1MDE4IDE3Ny42NzE3MDczOSAxMC4yMzI2MTczOCBDMTc3LjY4NDkyODExIDE1LjgzNDM5NjE1IDE3Ny4yNjMxOTI3MSAyMS4yNDU1OTk3MiAxNzYuMzc2Mzg4NzkgMjYuNzgwNTc1NzUgQzE3Ni4xNzUwNTMzNCAyOC4wOTk2NDkyNCAxNzYuMTc1MDUzMzQgMjguMDk5NjQ5MjQgMTc1Ljk2OTY1MDUxIDI5LjQ0NTM3MDY3IEMxNjkuOTA1MTQyMTYgNjcuNzk1Mjc5MjUgMTU1LjMwNjU0MTQ1IDEwNS42MDE4MjE5NCAxMjguNjI2Mzg4NzkgMTM0LjQwNTU3NTc1IEMxMjcuNzY2NTg0MSAxMzUuMzQ2NTkxMzggMTI2LjkwNjc3OTQxIDEzNi4yODc2MDcgMTI2LjAyMDkyMDA0IDEzNy4yNTcxMzgyNSBDMTA1Ljk3NjEyMTQ0IDE1OC4yNzkwMDk3NSA3OS44MTgxODk1NCAxNzAuNzYwMTU4ODMgNTEuNjI2Mzg4NzkgMTc2LjQwNTU3NTc1IEM1MC4wNDI3NzU1MSAxNzYuNzQ1ODg4MjUgNTAuMDQyNzc1NTEgMTc2Ljc0NTg4ODI1IDQ4LjQyNzE3MDA0IDE3Ny4wOTMwNzU3NSBDMzIuMDA0ODE4MTUgMTgwLjA2MDIyNTkxIDE0LjM2NzQ0MTMzIDE3OS4zNDEyNjU3NSAtMi4wNjExMTEyMSAxNzYuOTA1NTc1NzUgQy0zMC43NzU4NDMxMiAxNzIuNzE3MDQ1MDcgLTYwLjA1MzI1NDAzIDE3NC40NjkyMjQ1MiAtODcuMzczNjExMjEgMTg0LjQwNTU3NTc1IEMtODguMDQ2MTc5NTcgMTg0LjY0Njc5MTU3IC04OC43MTg3NDc5MyAxODQuODg4MDA3MzkgLTg5LjQxMTY5NzE1IDE4NS4xMzY1MzI3OCBDLTExMS4wODc4MjE3MyAxOTMuMDE3MjgyNzMgLTEyOS45MDU3Njk0OSAyMDUuMzIwMTUxMjUgLTE0Ni4zNzM2MTEyMSAyMjEuNDA1NTc1NzUgQy0xNDcuMjEwMjEyNzcgMjIyLjE4MDMwMjMxIC0xNDguMDQ2ODE0MzQgMjIyLjk1NTAyODg4IC0xNDguOTA4NzY3NDYgMjIzLjc1MzIzMiBDLTE4MS4yMTM0OTEwNyAyNTQuNDE5NjgxMTkgLTE5MS41MjMyMjEwNSAyOTUuODAwOTAyNjkgLTE5Ni4zNzM2MTEyMSAzMzguNDA1NTc1NzUgQy0xOTkuNzczNTk0NSAzMzUuMTAyNTA1MTcgLTIwMi40NTk1ODA4NyAzMzEuNjA0MzM2MzMgLTIwNS4wNjExMTEyMSAzMjcuNjU1NTc1NzUgQy0yMDUuNDkzMTg4ODUgMzI3LjAwMzA2ODQzIC0yMDUuOTI1MjY2NDkgMzI2LjM1MDU2MTEgLTIwNi4zNzA0MzczOCAzMjUuNjc4MjgwODMgQy0yMTAuNzIzOTU2OTYgMzE5LjAxMzQ2NyAtMjE0LjY2MTA5ODYgMzEyLjEzNjUxMDgxIC0yMTguNDQwOTk0MDIgMzA1LjEzMzExNDgxIEMtMjE5LjIyODY0MjMxIDMwMy42NzQxMDk3NyAtMjIwLjAzMDA2NTU3IDMwMi4yMjI1NTM3MiAtMjIwLjgzNDU0ODcxIDMwMC43NzI3NjMyNSBDLTIyNC42MDc4MDM4NCAyOTMuNjgyODg4OTYgLTIyNy4wODc3ODc4MyAyODYuMTIwODYzMjEgLTIyOS42NDYwNzIxNSAyNzguNTMxMDY0MDMgQy0yMzAuMzEyOTAzMzIgMjc2LjU4MjkzMjQyIC0yMzEuMDE3MjIxODcgMjc0LjY0NzczNzM5IC0yMzEuNzI1MTczNzEgMjcyLjcxNDE2OTUgQy0yNDguNDI3NjM3ODUgMjI2LjAzOTQ5MjEyIC0yNDQuNTA0NjMyNCAxNjkuMDA0MzA4MjggLTIyMy40OTg2MTEyMSAxMjQuMzY2NTEzMjUgQy0yMjEuNTQ4NjE0MzkgMTIwLjMzMDEyNTg3IC0yMTkuNDg0MzI4MiAxMTYuMzU5ODY4OTQgLTIxNy4zNzM2MTEyMSAxMTIuNDA1NTc1NzUgQy0yMTYuNzU3NDM5MzQgMTExLjI0NDEzMDQ0IC0yMTYuMTQxMjY3NDYgMTEwLjA4MjY4NTEzIC0yMTUuNTA2NDIzNzEgMTA4Ljg4NjA0NDUgQy0yMDguMDAyMjc0NjUgOTUuMjYzMzY3MjcgLTE5OS4wNjc5MjM3IDgyLjcwMjA5MjI0IC0xODguMzczNjExMjEgNzEuNDA1NTc1NzUgQy0xODcuMjAwOTMyNTEgNzAuMDU2NjEyMDIgLTE4Ni4wMzQwMDQ4NyA2OC43MDI2MjE2NCAtMTg0Ljg3MzYxMTIxIDY3LjM0MzA3NTc1IEMtMTY5LjE2MTM0MTU1IDQ5LjM0NDcyNTI4IC0xNTAuMjY0MjkwMjggMzUuNzUwMjQ0OTcgLTEyOS4zNzM2MTEyMSAyNC40MDU1NzU3NSBDLTEyOC43NTgwODM4NyAyNC4wNjY4NzQ1OCAtMTI4LjE0MjU1NjUyIDIzLjcyODE3MzQxIC0xMjcuNTA4Mzc2ODQgMjMuMzc5MjA4NTYgQy0xMTEuMjI4NDc5MTkgMTQuNDk2NzMzMDUgLTkzLjQ1NDYyMzA5IDguMzU0MzU4NDUgLTc1LjM3MzYxMTIxIDQuNDA1NTc1NzUgQy03NC41NTIwOTI1NiA0LjIyNDI3MzY0IC03My43MzA1NzM5MSA0LjA0Mjk3MTUzIC03Mi44ODQxNjA3NiAzLjg1NjE3NTQyIEMtNDguODkxOTkxNzQgLTEuMTQ0NTk4MTkgLTI0LjM2OTczNjYyIC0wLjExNTM0MDc5IDAgMCBaICIgZmlsbD0iIzAwOTFGRSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDE5LjM3MzYxMTIxMTc3NjczLDQwLjU5NDQyNDI0Nzc0MTcpIi8+CjxwYXRoIGQ9Ik0wIDAgQzMuNDc3MDY0OTggMy4yMTQ0OTQ4NiA2LjA5NjczNTc5IDYuODE1ODE5NzkgOC42ODc1IDEwLjc1IEM5LjMzODg3OTM5IDExLjczNzQ2MjE2IDkuMzM4ODc5MzkgMTEuNzM3NDYyMTYgMTAuMDAzNDE3OTcgMTIuNzQ0ODczMDUgQzE4LjM1MTU4MzQ1IDI1LjU2MTI2Mjk1IDI1LjE0MDI3NTc3IDM4Ljg3ODU2MDU5IDMxIDUzIEMzMS4zOTk2MDkzNyA1My45NjE2NDA2MiAzMS43OTkyMTg3NSA1NC45MjMyODEyNSAzMi4yMTA5Mzc1IDU1LjkxNDA2MjUgQzM3LjUyMzkyODA5IDY5LjY0MjgzMDE4IDQwLjc2MjMxMjU4IDg0LjQ3OTgxNjMxIDQzIDk5IEM0My4xMDQ0MTQwNiA5OS42NjcyNTA5OCA0My4yMDg4MjgxMyAxMDAuMzM0NTAxOTUgNDMuMzE2NDA2MjUgMTAxLjAyMTk3MjY2IEM1MS4yNTM5MzkwNSAxNTQuMDEwMDI3ODcgMzYuNjUzMTE4MDcgMjA4LjU5NDIyMDgyIDUuMzI4MTI1IDI1MS43MzA0Njg3NSBDMC45MTU5NzY1IDI1Ny42NDg4OTQ3OCAtMy44NDQ1NTMxIDI2My4yMzQ5OTg3IC04Ljg0NzY1NjI1IDI2OC42NjAxNTYyNSBDLTEwLjk2NzE2NjE0IDI3MC45NjQzMDU4NCAtMTMuMDE0MzUzNDIgMjczLjMxOTk1NDM0IC0xNS4wNjI1IDI3NS42ODc1IEMtMTguNzYyNzgwNjkgMjc5Ljg0NTc3MjIxIC0yMi43MzEyNzM4NSAyODMuNDM5MDAzMzEgLTI3IDI4NyBDLTI4LjMwOTA0Mjk3IDI4OC4xNDA4MjAzMSAtMjguMzA5MDQyOTcgMjg4LjE0MDgyMDMxIC0yOS42NDQ1MzEyNSAyODkuMzA0Njg3NSBDLTM2Ljc2NjE2MzA2IDI5NS40MjUyODY3MyAtNDQuMjAxODYyOTkgMzAwLjc2NTkzMzMzIC01Mi4xMjUgMzA1LjgwMTc1NzgxIEMtNTMuODg4ODQ4NzQgMzA2LjkyODk2NzQgLTU1LjYzMTkzODE3IDMwOC4wODMyMTUwNSAtNTcuMzc1IDMwOS4yNDIxODc1IEMtOTEuNTc2MDgyNzQgMzMxLjQxOTQ5MDU0IC0xMzEuODczMzI1OTEgMzM4LjE4NTYzMDUyIC0xNzEuODMzMDA3ODEgMzM4LjExMzUyNTM5IEMtMTc0LjAzMTc5NDIyIDMzOC4xMTMyNDI5NSAtMTc2LjIzMDU4MDcyIDMzOC4xMTM0MDIzNyAtMTc4LjQyOTM2NzA3IDMzOC4xMTM5Njc5IEMtMTg0LjM2ODU1ODAzIDMzOC4xMTQyNTM2MyAtMTkwLjMwNzcyODYxIDMzOC4xMDgzOTMwNiAtMTk2LjI0NjkxNDg2IDMzOC4xMDEzOTM5NCBDLTIwMi40NjQ4ODE0NyAzMzguMDk1MTIzMTYgLTIwOC42ODI4NDg1OSAzMzguMDk0NTUzNjYgLTIxNC45MDA4MTc4NyAzMzguMDkzMzY4NTMgQy0yMjUuOTk0Mzg5MDcgMzM4LjA5MDQ0MjI5IC0yMzcuMDg3OTUxODcgMzM4LjA4MzIyOTI2IC0yNDguMTgxNTE5MjQgMzM4LjA3MzcyNTgxIEMtMjU4LjI0ODc3OTI5IDMzOC4wNjUxNDc1NCAtMjY4LjMxNjAzNzg1IDMzOC4wNTg5MTAxMSAtMjc4LjM4MzMwMDc4IDMzOC4wNTQ5MzE2NCBDLTI3OS4zNzc3MjE3OCAzMzguMDU0NTM3NTYgLTI3OS4zNzc3MjE3OCAzMzguMDU0NTM3NTYgLTI4MC4zOTIyMzIwOSAzMzguMDU0MTM1NTEgQy0yODMuNzE4NDMyMzUgMzM4LjA1MjgzMDM2IC0yODcuMDQ0NjMyNjMgMzM4LjA1MTU2ODk0IC0yOTAuMzcwODMyOTIgMzM4LjA1MDMyMzYxIEMtMzE3LjkxMzg5Mzc5IDMzOC4wMzk4ODQwMyAtMzQ1LjQ1Njk0NjM3IDMzOC4wMjIzMDU4NiAtMzczIDMzOCBDLTM3My4wMTk0NjczIDMzNC44MDk3NDE3NSAtMzczLjAzMTE0NzMyIDMzMS42MTk0OTkwMyAtMzczLjA0MTUwMzkxIDMyOC40MjkxOTkyMiBDLTM3My4wNDcwNjgwMiAzMjcuNTMyODMyNDkgLTM3My4wNTI2MzIxNCAzMjYuNjM2NDY1NzYgLTM3My4wNTgzNjQ4NyAzMjUuNzEyOTM2NCBDLTM3My4wNzUzMzM4NyAzMTguNzMzNDg0MTQgLTM3Mi41NDU2Njg1NiAzMTIuMDExNzQ4OTUgLTM3MS4zNzUgMzA1LjEyNSBDLTM3MS4xOTg5NjI0IDMwNC4wNDIwMjYzNyAtMzcxLjAyMjkyNDggMzAyLjk1OTA1MjczIC0zNzAuODQxNTUyNzMgMzAxLjg0MzI2MTcyIEMtMzY4LjI2MDU4OTIgMjg2Ljc1ODQ0OTY3IC0zNjQuNDg0NDc2NzcgMjcxLjkwMzgzMjA5IC0zNTggMjU4IEMtMzU3LjM4MjQ0NTQ0IDI1Ni41ODYwOTc3NiAtMzU2Ljc2NTI5OTIyIDI1NS4xNzIwMTcxNSAtMzU2LjE0ODQzNzUgMjUzLjc1NzgxMjUgQy0zNTAuNTg5ODg0OSAyNDEuMjQzOTM2MTUgLTM0NC4wNTYwNjk1OCAyMjkuMDgyODI4MTcgLTMzNiAyMTggQy0zMzUuNjEzNDQyMzggMjE3LjQ2NjgxMTUyIC0zMzUuMjI2ODg0NzcgMjE2LjkzMzYyMzA1IC0zMzQuODI4NjEzMjggMjE2LjM4NDI3NzM0IEMtMzEyLjExNDU2MzAzIDE4NS4yOTA5ODYwMiAtMjc5LjM3NDk2ODMyIDE2Ny42ODE4MDYxNCAtMjQxLjgwNzg2MTMzIDE2MS40MjExNDI1OCBDLTIyMy44NDk5Nzc1NyAxNTguNzI3Njk0MjMgLTIwNi4xODE0NjE3MiAxNTkuNzkxNDkwNjcgLTE4OC4yNSAxNjIgQy0xNjEuNTkyOTg2NzggMTY1LjI0NTAzOTUzIC0xMzYuNTIyNTEwMTEgMTY0LjQ1MzgwMjM0IC0xMTEgMTU1IEMtMTA5Ljc2NTA3ODEzIDE1NC41NDc1MzkwNiAtMTA4LjUzMDE1NjI1IDE1NC4wOTUwNzgxMiAtMTA3LjI1NzgxMjUgMTUzLjYyODkwNjI1IEMtNjUuOTU2ODU4NjEgMTM4LjAyMzEwNzA4IC0zNC41NjU4NzcxMSAxMDguMTE0NDYwNjMgLTE1LjMyNDIxODc1IDY4LjU1NDY4NzUgQy01LjM2Njk4Njk2IDQ2LjM3NjA0NzE4IC0xLjg2ODg4NDM1IDI0LjA0NzIwNjcyIDAgMCBaICIgZmlsbD0iIzAwOTFGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTUyLDM5MCkiLz4KPHBhdGggZD0iTTAgMCBDMTUuNTI0NzIxNDcgMTEuMjA1MzQzMzIgMjUuNjkzNzY2MTYgMjUuMTE4MTM5ODcgMjkuNTExNzE4NzUgNDQuMTA5Mzc1IEMzMS43MjMzNTE4NiA2MC44NjA4NTM1IDI4LjQ3MDMwMDQ4IDc3LjA2MDk1MzY5IDE4LjkwNjI1IDkxLjA5NzY1NjI1IEM4LjI1NTM4MTgxIDEwNC44MzUwNjg1NyAtNi41MjM0MzgwNSAxMTYuNTU2ODk5OTYgLTI0LjI0MjE4NzUgMTE4Ljg4MjgxMjUgQy00My44NTM3OTE4MSAxMjAuMzYwMzk5MTMgLTU5LjI2NTYwMjcgMTE3LjI3MzU3MDU2IC03NC44NzEwOTM3NSAxMDQuODk0NTMxMjUgQy04Ny4zODAxMzcyOCA5NC4xMzQ4NzI3NiAtOTYuODIwMDAzMTkgNzkuNzk0Nzk2NjUgLTk4LjM3ODkwNjI1IDYzLjAzMTI1IEMtOTguNDkzODU2MDEgNTkuODYwMjIyMTkgLTk4LjUwMzYzNjk2IDU2LjcwNzkzMTAzIC05OC40Njg3NSA1My41MzUxNTYyNSBDLTk4LjQ4MDM1MTU2IDUyLjQ3NjE5MTQxIC05OC40OTE5NTMxMyA1MS40MTcyMjY1NiAtOTguNTAzOTA2MjUgNTAuMzI2MTcxODggQy05OC40NDI4MDE1IDMzLjc5NzMzNjU4IC05MC45NTU0NzIzMSAyMC4yNDMxNTEwOSAtNzkuNjU2MjUgOC40OTYwOTM3NSBDLTU4LjIxMTA1MTMzIC0xMS41NzYwODkxNSAtMjUuMjE5ODA1OSAtMTUuOTY1NzY0MjIgMCAwIFogIiBmaWxsPSIjMDAwMDJCIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MjIuMDkzNzUsMzI5LjkwMjM0Mzc1KSIvPgo8L3N2Zz4K + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarconnections + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarconnections/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarconnections/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarfunctions + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarfunctions/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarfunctions/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsargeoreplications + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsargeoreplications/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsargeoreplications/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnamespaces + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnamespaces/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnamespaces/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnsisolationpolicies + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnsisolationpolicies/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarnsisolationpolicies/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpackages + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpackages/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpackages/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpermissions + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpermissions/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarpermissions/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarsinks + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarsinks/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarsinks/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarsources + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsarsources/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsarsources/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsartenants + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsartenants/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsartenants/status + verbs: + - get + - patch + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsartopics + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - resource.streamnative.io + resources: + - pulsartopics/finalizers + verbs: + - update + - apiGroups: + - resource.streamnative.io + resources: + - pulsartopics/status + verbs: + - get + - patch + - update + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: pulsar-resources-operator-controller-manager + deployments: + - label: + control-plane: controller-manager + name: pulsar-resources-operator-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + service.istio.io/canonical-revision: 0.6.5 + spec: + containers: + - args: + - --secure-listen-address=0.0.0.0:8443 + - --upstream=http://127.0.0.1:8080/ + - --logtostderr=true + - --v=0 + image: gcr.io/kubebuilder/kube-rbac-proxy:v0.14.4 + name: kube-rbac-proxy + ports: + - containerPort: 8443 + name: https + protocol: TCP + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=127.0.0.1:8080 + - --leader-elect + command: + - /manager + image: olm.streamnative.io/streamnativeio/pulsar-resources-operator:v0.6.5 + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + securityContext: + runAsNonRoot: true + serviceAccountName: pulsar-resources-operator-controller-manager + terminationGracePeriodSeconds: 10 + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: pulsar-resources-operator-controller-manager + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - resources + - pulsar resources + - pulsar + - streamnative + links: + - name: Pulsar Resources Operator + url: https://github.com/streamnative/pulsar-resources-operator + maintainers: + - email: cloud@streamnative.io + name: StreamNative Cloud + maturity: alpha + provider: + name: StreamNative + url: https://streamnative.io + version: 0.6.5 diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarconnections.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarconnections.yaml new file mode 100644 index 00000000000..5872ae38377 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarconnections.yaml @@ -0,0 +1,307 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsarconnections.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarConnection + listKind: PulsarConnectionList + plural: pulsarconnections + shortNames: + - pconn + singular: pulsarconnection + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.adminServiceURL + name: ADMIN_SERVICE_URL + type: string + - jsonPath: .spec.adminServiceSecureURL + name: ADMIN_SERVICE_SECURE_URL + priority: 1 + type: string + - jsonPath: .spec.brokerServiceURL + name: BROKER_SERVICE_URL + type: string + - jsonPath: .spec.brokerServiceSecureURL + name: BROKER_SERVICE_SECURE_URL + priority: 1 + type: string + - jsonPath: .metadata.generation + name: GENERATION + priority: 1 + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + priority: 1 + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + PulsarConnection is the Schema for the pulsarconnections API + It represents a connection to a Pulsar cluster and includes both the desired state (Spec) + and the observed state (Status) of the connection. + 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: |- + PulsarConnectionSpec defines the desired state of PulsarConnection + It specifies the configuration for connecting to a Pulsar cluster. + + + For plaintext (non-TLS) Pulsar clusters: + - Set AdminServiceURL to "http://:" + - Set BrokerServiceURL to "pulsar://:" + + + For TLS-enabled Pulsar clusters: + - Set AdminServiceSecureURL to "https://:" + - Set BrokerServiceSecureURL to "pulsar+ssl://:" + - Optionally set BrokerClientTrustCertsFilePath if using custom CA certificates + properties: + adminServiceSecureURL: + description: |- + AdminServiceSecureURL is the HTTPS URL for secure connections to the Pulsar admin service. + Use this for encrypted administrative operations. + pattern: ^https://.+$ + type: string + adminServiceURL: + description: |- + AdminServiceURL is the HTTP(S) URL for the Pulsar cluster's admin service. + This URL is used for administrative operations. + pattern: ^https?://.+$ + type: string + authentication: + description: |- + Authentication defines the authentication configuration for connecting to the Pulsar cluster. + It supports both token-based and OAuth2-based authentication methods. + properties: + oauth2: + description: |- + OAuth2 specifies the configuration for OAuth2-based authentication. + This includes all necessary parameters for setting up OAuth2 authentication with Pulsar. + For detailed information on the OAuth2 fields, refer to the PulsarAuthenticationOAuth2 struct. + properties: + audience: + description: |- + Audience is the intended recipient of the token. In Pulsar's context, this is usually + the URL of your Pulsar cluster or a specific identifier for your Pulsar service. + type: string + clientID: + description: ClientID is the OAuth2 client identifier issued + to the client during the registration process. + type: string + issuerEndpoint: + description: |- + IssuerEndpoint is the URL of the OAuth2 authorization server. + This is typically the base URL of your identity provider's OAuth2 service. + type: string + key: + description: |- + Key is either the client secret or the path to a JSON credentials file. + For confidential clients, this would be the client secret. + For public clients using JWT authentication, this would be the path to the JSON credentials file. + properties: + secretRef: + description: SecretKeyRef indicates a secret name and + key + properties: + key: + type: string + name: + type: string + required: + - key + - name + type: object + value: + type: string + type: object + scope: + description: |- + Scope is an optional field to request specific permissions from the OAuth2 server. + If not specified, the default scope defined by the OAuth2 server will be used. + type: string + required: + - audience + - clientID + - issuerEndpoint + - key + type: object + token: + description: |- + Token specifies the configuration for token-based authentication. + This can be either a direct token value or a reference to a secret containing the token. + If using a secret, the token should be stored under the specified key in the secret. + properties: + secretRef: + description: SecretKeyRef indicates a secret name and key + properties: + key: + type: string + name: + type: string + required: + - key + - name + type: object + value: + type: string + type: object + type: object + brokerClientTrustCertsFilePath: + description: |- + BrokerClientTrustCertsFilePath is the file path to the trusted TLS certificate + for outgoing connections to Pulsar brokers. This is used for TLS verification. + type: string + brokerServiceSecureURL: + description: |- + BrokerServiceSecureURL is the TLS-enabled URL for secure connections to Pulsar brokers. + Use this for encrypted communications with the Pulsar cluster. + pattern: ^pulsar\+ssl://.+$ + type: string + brokerServiceURL: + description: |- + BrokerServiceURL is the non-TLS URL for connecting to Pulsar brokers. + Use this for non-secure connections to the Pulsar cluster. + pattern: ^pulsar?://.+$ + type: string + clusterName: + description: |- + ClusterName specifies the name of the local Pulsar cluster. + When setting up Geo-Replication between Pulsar instances, this should be enabled to identify the cluster. + type: string + type: object + status: + description: |- + PulsarConnectionStatus defines the observed state of PulsarConnection. + It provides information about the current status of the Pulsar connection. + properties: + conditions: + description: |- + Conditions represent the latest available observations of the connection's current state. + It follows the Kubernetes conventions for condition types and status. + The "Ready" condition type is typically used to indicate the overall status. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + This field is used to track whether the controller has processed the latest changes. + format: int64 + type: integer + secretKeyHash: + description: |- + SecretKeyHash is the hash of the secret reference used for authentication. + This is used to detect changes in the secret without exposing sensitive information. + The controller should update this hash when the secret changes. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarfunctions.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarfunctions.yaml new file mode 100644 index 00000000000..e7652170c51 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarfunctions.yaml @@ -0,0 +1,457 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsarfunctions.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarFunction + listKind: PulsarFunctionList + plural: pulsarfunctions + shortNames: + - pfunction + singular: pulsarfunction + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarFunction is the Schema for the pulsar functions 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: PulsarFunctionSpec defines the desired state of PulsarFunction + properties: + autoAck: + description: AutoAck is the flag to indicate whether the function + should auto ack + type: boolean + batchBuilder: + description: BatchBuilder is the batch builder that the function uses + type: string + className: + description: ClassName is the class name of the function + type: string + cleanupSubscription: + description: CleanupSubscription is the flag to indicate whether the + subscription should be cleaned up when the function is deleted + type: boolean + connectionRef: + description: ConnectionRef is the reference to the PulsarConnection + resource + properties: + 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 + type: object + x-kubernetes-map-type: atomic + customRuntimeOptions: + description: CustomRuntimeOptions is the custom runtime options of + the function + x-kubernetes-preserve-unknown-fields: true + customSchemaInputs: + additionalProperties: + type: string + description: CustomSchemaInputs is the custom schema inputs of the + function + type: object + customSchemaOutputs: + additionalProperties: + type: string + description: CustomSchemaOutputs is the custom schema outputs of the + function + type: object + customSerdeInputs: + additionalProperties: + type: string + description: CustomSerdeInputs is the custom serde inputs of the function + type: object + deadLetterTopic: + description: DeadLetterTopic is the dead letter topic of the function + type: string + exposePulsarAdminClientEnabled: + description: ExposePulsarAdminClientEnabled is the flag to indicate + whether the function should expose pulsar admin client + type: boolean + forwardSourceMessageProperty: + description: ForwardSourceMessageProperty is the flag to indicate + whether the function should forward source message properties + type: boolean + go: + description: Go is the go of the function + properties: + url: + type: string + type: object + inputSpecs: + additionalProperties: + description: ConsumerConfig represents the configuration for the + consumer of the pulsar functions and connectors + properties: + consumerProperties: + additionalProperties: + type: string + type: object + cryptoConfig: + description: CryptoConfig represents the configuration for the + crypto of the pulsar functions and connectors + properties: + consumerCryptoFailureAction: + type: string + cryptoKeyReaderClassName: + type: string + cryptoKeyReaderConfig: + additionalProperties: + type: string + type: object + encryptionKeys: + items: + type: string + type: array + producerCryptoFailureAction: + type: string + type: object + poolMessages: + type: boolean + receiverQueueSize: + type: integer + regexPattern: + type: boolean + schemaProperties: + additionalProperties: + type: string + type: object + schemaType: + type: string + serdeClassName: + type: string + type: object + description: InputSpecs is the input specs of the function + type: object + inputTypeClassName: + description: InputTypeClassName is the input type class name of the + function + type: string + inputs: + description: Inputs is the inputs of the function + items: + type: string + type: array + jar: + description: Jar is the jar of the function + properties: + url: + type: string + type: object + lifecyclePolicy: + description: |- + PulsarResourceLifeCyclePolicy defines the behavior for managing Pulsar resources + when the corresponding custom resource (CR) is deleted from the Kubernetes cluster. + This policy allows users to control whether Pulsar resources should be retained or + removed from the Pulsar cluster after the CR is deleted. + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + logTopic: + description: LogTopic is the log topic of the function + type: string + maxMessageRetries: + description: MaxMessageRetries is the max message retries of the function + type: integer + maxPendingAsyncRequests: + description: MaxPendingAsyncRequests is the max pending async requests + of the function + type: integer + name: + description: Name is the name of the function + type: string + namespace: + description: Namespace is the namespace of the function + type: string + output: + description: Output is the output of the function + type: string + outputSchemaType: + description: OutputSchemaType is the output schema type of the function + type: string + outputSerdeClassName: + description: OutputSerdeClassName is the output serde class name of + the function + type: string + outputTypeClassName: + description: OutputTypeClassName is the output type class name of + the function + type: string + parallelism: + description: Parallelism is the parallelism of the function + type: integer + processingGuarantees: + description: ProcessingGuarantees is the processing guarantees of + the function + type: string + producerConfig: + description: ProducerConfig is the producer config of the function + properties: + batchBuilder: + type: string + compressionType: + type: string + cryptoConfig: + description: CryptoConfig represents the configuration for the + crypto of the pulsar functions and connectors + properties: + consumerCryptoFailureAction: + type: string + cryptoKeyReaderClassName: + type: string + cryptoKeyReaderConfig: + additionalProperties: + type: string + type: object + encryptionKeys: + items: + type: string + type: array + producerCryptoFailureAction: + type: string + type: object + maxPendingMessages: + type: integer + maxPendingMessagesAcrossPartitions: + type: integer + useThreadLocalProducers: + type: boolean + type: object + py: + description: Py is the py of the function + properties: + url: + type: string + type: object + resources: + description: Resources is the resources of the function + properties: + cpu: + type: string + disk: + format: int64 + type: integer + ram: + format: int64 + type: integer + type: object + retainKeyOrdering: + description: RetainKeyOrdering is the flag to indicate whether the + function should retain key ordering + type: boolean + retainOrdering: + description: RetainOrdering is the flag to indicate whether the function + should retain ordering + type: boolean + runtimeFlags: + description: RuntimeFlags is the runtime flags of the function + type: string + secrets: + additionalProperties: + description: FunctionSecretKeyRef indicates a secret name and key + properties: + key: + type: string + path: + type: string + required: + - key + - path + type: object + description: Secrets is the secrets of the function + type: object + skipToLatest: + description: SkipToLatest is the flag to indicate whether the function + should skip to latest + type: boolean + subName: + description: SubName is the sub name of the function + type: string + subscriptionPosition: + description: SubscriptionPosition is the subscription position of + the function + type: string + tenant: + description: Tenant is the tenant of the function + type: string + timeoutMs: + description: TimeoutMs is the function timeout in milliseconds + format: int64 + type: integer + topicsPattern: + description: TopicsPattern is the topics pattern that the function + subscribes to + type: string + userConfig: + description: UserConfig is the user config of the function + x-kubernetes-preserve-unknown-fields: true + windowConfig: + description: WindowConfig is the window config of the function + properties: + actualWindowFunctionClassName: + type: string + lateDataTopic: + type: string + maxLagMs: + format: int64 + type: integer + processingGuarantees: + type: string + slidingIntervalCount: + type: integer + slidingIntervalDurationMs: + format: int64 + type: integer + timestampExtractorClassName: + type: string + watermarkEmitIntervalMs: + format: int64 + type: integer + windowLengthCount: + type: integer + windowLengthDurationMs: + format: int64 + type: integer + type: object + required: + - connectionRef + type: object + status: + description: PulsarFunctionStatus defines the observed state of PulsarFunction + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsargeoreplications.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsargeoreplications.yaml new file mode 100644 index 00000000000..399e02f7fb0 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsargeoreplications.yaml @@ -0,0 +1,175 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsargeoreplications.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + kind: PulsarGeoReplication + listKind: PulsarGeoReplicationList + plural: pulsargeoreplications + singular: pulsargeoreplication + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarGeoReplication is the Schema for the pulsargeoreplications + 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: PulsarGeoReplicationSpec defines the desired state of PulsarGeoReplication + properties: + connectionRef: + description: ConnectionRef is the reference to the source PulsarConnection + properties: + 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 + type: object + x-kubernetes-map-type: atomic + destinationConnectionRef: + description: DestinationConnectionRef is the connection reference + to the remote cluster + properties: + 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 + type: object + x-kubernetes-map-type: atomic + lifecyclePolicy: + description: |- + PulsarResourceLifeCyclePolicy defines the behavior for managing Pulsar resources + when the corresponding custom resource (CR) is deleted from the Kubernetes cluster. + This policy allows users to control whether Pulsar resources should be retained or + removed from the Pulsar cluster after the CR is deleted. + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + required: + - connectionRef + - destinationConnectionRef + type: object + status: + description: PulsarGeoReplicationStatus defines the observed state of + PulsarGeoReplication + properties: + conditions: + description: Conditions Represents the observations of a connection's + current state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarnamespaces.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarnamespaces.yaml new file mode 100644 index 00000000000..a21874a33f2 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarnamespaces.yaml @@ -0,0 +1,323 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsarnamespaces.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarNamespace + listKind: PulsarNamespaceList + plural: pulsarnamespaces + shortNames: + - pns + singular: pulsarnamespace + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + PulsarNamespace is the Schema for the pulsarnamespaces API + It represents a Pulsar namespace in the Kubernetes cluster and includes both + the desired state (Spec) and the observed state (Status) of the namespace. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: |- + PulsarNamespaceSpec defines the desired state of a Pulsar namespace. + It corresponds to the configuration options available in Pulsar's namespace admin API. + properties: + backlogQuotaLimitSize: + anyOf: + - type: integer + - type: string + description: |- + BacklogQuotaLimitSize specifies the size limit for message backlog. + When the limit is reached, older messages will be removed or handled according to the retention policy. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + backlogQuotaLimitTime: + description: |- + BacklogQuotaLimitTime specifies the time limit for message backlog. + Messages older than this limit will be removed or handled according to the retention policy. + type: string + backlogQuotaRetentionPolicy: + description: |- + BacklogQuotaRetentionPolicy specifies the retention policy for messages when backlog quota is exceeded. + Valid values are "producer_request_hold", "producer_exception", or "consumer_backlog_eviction". + type: string + backlogQuotaType: + description: |- + BacklogQuotaType controls how the backlog quota is enforced. + "destination_storage" limits backlog by size (in bytes), while "message_age" limits by time. + enum: + - destination_storage + - message_age + type: string + bookieAffinityGroup: + description: BookieAffinityGroup is the name of the namespace isolation + policy to apply to the namespace. + properties: + bookkeeperAffinityGroupPrimary: + type: string + bookkeeperAffinityGroupSecondary: + type: string + required: + - bookkeeperAffinityGroupPrimary + type: object + bundles: + description: |- + Bundles specifies the number of bundles to split the namespace into. + This affects how the namespace is distributed across the cluster. + format: int32 + type: integer + connectionRef: + description: |- + ConnectionRef is the reference to the PulsarConnection resource + used to connect to the Pulsar cluster for this namespace. + properties: + 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 + type: object + x-kubernetes-map-type: atomic + deduplication: + description: Deduplication controls whether to enable message deduplication + for the namespace. + type: boolean + geoReplicationRefs: + description: |- + GeoReplicationRefs is a list of references to PulsarGeoReplication resources, + used to configure geo-replication for this namespace. + This is **ONLY** used when you are using PulsarGeoReplication for setting up geo-replication + between two Pulsar instances. + Please use `ReplicationClusters` instead if you are replicating clusters within the same Pulsar instance. + items: + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. + properties: + 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 + type: object + x-kubernetes-map-type: atomic + type: array + lifecyclePolicy: + description: |- + LifecyclePolicy determines whether to keep or delete the Pulsar namespace + when the Kubernetes resource is deleted. + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + maxConsumersPerSubscription: + description: MaxConsumersPerSubscription sets the maximum number of + consumers allowed on a single subscription in the namespace. + format: int32 + type: integer + maxConsumersPerTopic: + description: MaxConsumersPerTopic sets the maximum number of consumers + allowed on a single topic in the namespace. + format: int32 + type: integer + maxProducersPerTopic: + description: MaxProducersPerTopic sets the maximum number of producers + allowed on a single topic in the namespace. + format: int32 + type: integer + messageTTL: + description: |- + MessageTTL specifies the Time to Live (TTL) for messages in the namespace. + Messages older than this TTL will be automatically marked as consumed. + type: string + name: + description: Name is the fully qualified namespace name in the format + "tenant/namespace". + type: string + offloadThresholdSize: + anyOf: + - type: integer + - type: string + description: |- + OffloadThresholdSize specifies the size limit for message offloading. + When the limit is reached, older messages will be offloaded to the tiered storage. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + offloadThresholdTime: + description: |- + OffloadThresholdTime specifies the time limit for message offloading. + Messages older than this limit will be offloaded to the tiered storage. + type: string + replicationClusters: + description: |- + ReplicationClusters is the list of clusters to which the namespace is replicated + This is **ONLY** used if you are replicating clusters within the same Pulsar instance. + Please use `GeoReplicationRefs` instead if you are setting up geo-replication + between two Pulsar instances. + items: + type: string + type: array + retentionSize: + anyOf: + - type: integer + - type: string + description: |- + RetentionSize specifies the maximum size of backlog retained in the namespace. + Should be set in conjunction with RetentionTime for effective retention policy. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + retentionTime: + description: |- + RetentionTime specifies the minimum time to retain messages in the namespace. + Should be set in conjunction with RetentionSize for effective retention policy. + Retention Quota must exceed configured backlog quota for namespace + type: string + required: + - connectionRef + - name + type: object + status: + description: PulsarNamespaceStatus defines the observed state of PulsarNamespace + properties: + conditions: + description: |- + Conditions represent the latest available observations of the namespace's current state. + It follows the Kubernetes conventions for condition types and status. + The "Ready" condition type is typically used to indicate the overall status of the namespace. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + geoReplicationEnabled: + description: |- + GeoReplicationEnabled indicates whether geo-replication between two Pulsar instances (via PulsarGeoReplication) + is enabled for the namespace + type: boolean + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + This field is used to track whether the controller has processed the latest changes. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarnsisolationpolicies.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarnsisolationpolicies.yaml new file mode 100644 index 00000000000..58e2c6b1288 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarnsisolationpolicies.yaml @@ -0,0 +1,217 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsarnsisolationpolicies.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarNSIsolationPolicy + listKind: PulsarNSIsolationPolicyList + plural: pulsarnsisolationpolicies + shortNames: + - pnsip + singular: pulsarnsisolationpolicy + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + PulsarNSIsolationPolicy is the Schema for the pulsar ns-isolation-policy API + It represents a Pulsar NsIsolationPolicy in the Kubernetes cluster and includes both + the desired state (Spec) and the observed state (Status) of the policy. + 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: |- + PulsarNSIsolationPolicySpec defines the desired state of a Pulsar namespace isolation policy. + It corresponds to the configuration options available in Pulsar's namespaceIsolationPolicies admin API. + properties: + autoFailoverPolicyParams: + additionalProperties: + type: string + description: AutoFailoverPolicyParams auto failover policy parameters + type: object + autoFailoverPolicyType: + description: AutoFailoverPolicyType auto failover policy type name, + only support min_available now + enum: + - min_available + type: string + cluster: + description: Cluster is the name of the Pulsar Cluster + type: string + connectionRef: + description: |- + ConnectionRef is the reference to the PulsarConnection resource + used to connect to the Pulsar cluster for this ns-isolation-policy. + properties: + 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 + type: object + x-kubernetes-map-type: atomic + name: + description: Name is the policy name + type: string + namespaces: + description: Namespaces namespaces-regex list + items: + type: string + type: array + primary: + description: Primary primary-broker-regex list + items: + type: string + type: array + secondary: + description: Secondary secondary-broker-regex list, optional + items: + type: string + type: array + required: + - autoFailoverPolicyParams + - autoFailoverPolicyType + - cluster + - connectionRef + - name + - namespaces + - primary + type: object + status: + description: PulsarNSIsolationPolicyStatus defines the observed state + of PulsarNSIsolationPolicy + properties: + conditions: + description: |- + Conditions represent the latest available observations of the ns-isolation-policy's current state. + It follows the Kubernetes conventions for condition types and status. + The "Ready" condition type is typically used to indicate the overall status of the ns-isolation-policy. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + This field is used to track whether the controller has processed the latest changes. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarpackages.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarpackages.yaml new file mode 100644 index 00000000000..c770c1973b3 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarpackages.yaml @@ -0,0 +1,197 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsarpackages.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarPackage + listKind: PulsarPackageList + plural: pulsarpackages + shortNames: + - ppackage + singular: pulsarpackage + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarPackage is the Schema for the pulsar package management + service's package 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: PulsarPackageSpec defines the desired state of PulsarPackage + properties: + connectionRef: + description: ConnectionRef is the reference to the PulsarConnection + resource + properties: + 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 + type: object + x-kubernetes-map-type: atomic + contact: + type: string + description: + type: string + fileURL: + description: FileURL is the download-able URL of the package from + http or https protocol + type: string + lifecyclePolicy: + description: |- + PulsarResourceLifeCyclePolicy defines the behavior for managing Pulsar resources + when the corresponding custom resource (CR) is deleted from the Kubernetes cluster. + This policy allows users to control whether Pulsar resources should be retained or + removed from the Pulsar cluster after the CR is deleted. + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + packageURL: + description: PackageURL is the Pulsar Package URL, in format of type://tenant/namespace/package@version + type: string + properties: + additionalProperties: + type: string + type: object + required: + - connectionRef + - fileURL + - packageURL + type: object + status: + description: PulsarPackageStatus defines the observed state of PulsarPackage + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarpermissions.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarpermissions.yaml new file mode 100644 index 00000000000..2b28711a8bf --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarpermissions.yaml @@ -0,0 +1,222 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsarpermissions.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarPermission + listKind: PulsarPermissionList + plural: pulsarpermissions + shortNames: + - ppermission + singular: pulsarpermission + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.resourceName + name: RESOURCE NAME + type: string + - jsonPath: .spec.resourceType + name: RESOURCE TYPE + type: string + - jsonPath: .spec.roles + name: ROLES + type: string + - jsonPath: .spec.actions + name: ACTIONS + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + PulsarPermission is the Schema for the pulsarpermissions API. + It represents a set of permissions granted to specific roles for a Pulsar resource (namespace or topic). + 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: |- + PulsarPermissionSpec defines the desired state of PulsarPermission. + It specifies the configuration for granting permissions to Pulsar resources. + properties: + actions: + description: |- + Actions is a list of permissions to grant. + Valid options include "produce", "consume", and "functions". + items: + type: string + type: array + connectionRef: + description: |- + ConnectionRef is the reference to the PulsarConnection resource + used to connect to the Pulsar cluster for this permission. + properties: + 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 + type: object + x-kubernetes-map-type: atomic + lifecyclePolicy: + description: |- + LifecyclePolicy determines how to handle the Pulsar permissions + when the PulsarPermission resource is deleted. + type: string + resourceName: + description: |- + ResourceName is the name of the target resource (namespace or topic) + to which the permissions will be granted. + type: string + resourceType: + description: ResourceType indicates whether the permission is for + a namespace or a topic. + enum: + - namespace + - topic + type: string + roles: + description: |- + Roles is a list of role names that will be granted the specified permissions + for the target resource. + items: + type: string + type: array + required: + - connectionRef + - resourceName + - resourceType + - roles + type: object + status: + description: |- + PulsarPermissionStatus defines the observed state of PulsarPermission. + It provides information about the current status of the Pulsar permission configuration. + properties: + conditions: + description: |- + Conditions represent the latest available observations of the PulsarPermission's current state. + It follows the Kubernetes conventions for condition types and status. + The "Ready" condition type is typically used to indicate the overall status of the permission configuration. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + This field is used to track whether the controller has processed the latest changes. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarsinks.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarsinks.yaml new file mode 100644 index 00000000000..3cfca18536e --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarsinks.yaml @@ -0,0 +1,364 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsarsinks.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarSink + listKind: PulsarSinkList + plural: pulsarsinks + shortNames: + - psink + singular: pulsarsink + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarSink is the Schema for the pulsar functions 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: PulsarSinkSpec defines the desired state of PulsarSink + properties: + archive: + description: Archive is the archive of the PulsarSink + properties: + url: + type: string + type: object + autoAck: + description: AutoAck is the flag to enable or disable the auto ack + type: boolean + className: + description: ClassName is the class name of the PulsarSink + type: string + cleanupSubscription: + description: CleanupSubscription is the flag to enable or disable + the cleanup of subscription + type: boolean + configs: + description: Configs is the map of configs of the PulsarSink + x-kubernetes-preserve-unknown-fields: true + connectionRef: + description: ConnectionRef is the reference to the PulsarConnection + resource + properties: + 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 + type: object + x-kubernetes-map-type: atomic + customRuntimeOptions: + description: CustomRuntimeOptions is the custom runtime options of + the PulsarSink + x-kubernetes-preserve-unknown-fields: true + deadLetterTopic: + description: DeadLetterTopic is the dead letter topic of the PulsarSink + type: string + inputSpecs: + additionalProperties: + description: ConsumerConfig represents the configuration for the + consumer of the pulsar functions and connectors + properties: + consumerProperties: + additionalProperties: + type: string + type: object + cryptoConfig: + description: CryptoConfig represents the configuration for the + crypto of the pulsar functions and connectors + properties: + consumerCryptoFailureAction: + type: string + cryptoKeyReaderClassName: + type: string + cryptoKeyReaderConfig: + additionalProperties: + type: string + type: object + encryptionKeys: + items: + type: string + type: array + producerCryptoFailureAction: + type: string + type: object + poolMessages: + type: boolean + receiverQueueSize: + type: integer + regexPattern: + type: boolean + schemaProperties: + additionalProperties: + type: string + type: object + schemaType: + type: string + serdeClassName: + type: string + type: object + description: InputSpecs is the map of input specs of the PulsarSink + type: object + inputs: + description: Inputs is the list of inputs of the PulsarSink + items: + type: string + type: array + lifecyclePolicy: + description: |- + PulsarResourceLifeCyclePolicy defines the behavior for managing Pulsar resources + when the corresponding custom resource (CR) is deleted from the Kubernetes cluster. + This policy allows users to control whether Pulsar resources should be retained or + removed from the Pulsar cluster after the CR is deleted. + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + maxMessageRetries: + description: MaxMessageRetries is the max message retries of the PulsarSink + type: integer + name: + description: Name is the name of the PulsarSink + type: string + namespace: + description: Namespace is the namespace of the PulsarSink + type: string + negativeAckRedeliveryDelayMs: + description: NegativeAckRedeliveryDelayMs is the negative ack redelivery + delay in milliseconds of the PulsarSink + format: int64 + type: integer + parallelism: + description: Parallelism is the parallelism of the PulsarSink + type: integer + processingGuarantees: + description: ProcessingGuarantees is the processing guarantees of + the PulsarSink + type: string + resources: + description: Resources is the resource requirements for the PulsarSink + properties: + cpu: + type: string + disk: + format: int64 + type: integer + ram: + format: int64 + type: integer + type: object + retainKeyOrdering: + description: RetainKeyOrdering is the flag to enable or disable the + retain key ordering + type: boolean + retainOrdering: + description: RetainOrdering is the flag to enable or disable the retain + ordering + type: boolean + runtimeFlags: + description: RuntimeFlags is the runtime flags of the PulsarSink + type: string + secrets: + additionalProperties: + description: FunctionSecretKeyRef indicates a secret name and key + properties: + key: + type: string + path: + type: string + required: + - key + - path + type: object + description: Secrets is the map of secrets of the PulsarSink + type: object + sinkType: + description: SinkType is the type of the PulsarSink + type: string + sourceSubscriptionName: + description: SourceSubscriptionName is the source subscription name + of the PulsarSink + type: string + sourceSubscriptionPosition: + description: SourceSubscriptionPosition is the source subscription + position of the PulsarSink + type: string + tenant: + description: Tenant is the tenant of the PulsarSink + type: string + timeoutMs: + description: TimeoutMs is the timeout in milliseconds for the PulsarSink + format: int64 + type: integer + topicToSchemaProperties: + additionalProperties: + type: string + description: TopicToSchemaProperties is the map of topic to schema + properties of the PulsarSink + type: object + topicToSchemaType: + additionalProperties: + type: string + description: TopicToSchemaType is the map of topic to schema type + of the PulsarSink + type: object + topicToSerdeClassName: + additionalProperties: + type: string + description: TopicToSerdeClassName is the map of topic to serde class + name of the PulsarSink + type: object + topicsPattern: + description: TopicsPattern is the pattern of topics to consume from + Pulsar + type: string + transformFunction: + description: TransformFunction is the transform function of the PulsarSink + type: string + transformFunctionClassName: + description: TransformFunctionClassName is the transform function + class name of the PulsarSink + type: string + transformFunctionConfig: + description: TransformFunctionConfig is the transform function config + of the PulsarSink + type: string + required: + - connectionRef + type: object + status: + description: PulsarSinkStatus defines the observed state of PulsarSink + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarsources.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarsources.yaml new file mode 100644 index 00000000000..560fe8bcddb --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsarsources.yaml @@ -0,0 +1,293 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsarsources.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarSource + listKind: PulsarSourceList + plural: pulsarsources + shortNames: + - psource + singular: pulsarsource + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarSource is the Schema for the pulsar functions 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: PulsarSourceSpec defines the desired state of PulsarSource + properties: + archive: + description: Archive is the archive of the PulsarSource + properties: + url: + type: string + type: object + batchBuilder: + description: BatchBuilder is the batch builder of the PulsarSource + type: string + batchSourceConfig: + description: BatchSourceConfig is the batch source config of the PulsarSource + properties: + discoveryTriggererClassName: + type: string + discoveryTriggererConfig: + x-kubernetes-preserve-unknown-fields: true + type: object + className: + description: ClassName is the class name of the + type: string + configs: + description: Configs is the map of configs of the PulsarSource + x-kubernetes-preserve-unknown-fields: true + connectionRef: + description: ConnectionRef is the reference to the PulsarConnection + resource + properties: + 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 + type: object + x-kubernetes-map-type: atomic + customRuntimeOptions: + description: CustomRuntimeOptions is the custom runtime options of + the PulsarSource + x-kubernetes-preserve-unknown-fields: true + lifecyclePolicy: + description: |- + PulsarResourceLifeCyclePolicy defines the behavior for managing Pulsar resources + when the corresponding custom resource (CR) is deleted from the Kubernetes cluster. + This policy allows users to control whether Pulsar resources should be retained or + removed from the Pulsar cluster after the CR is deleted. + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + name: + description: Name is the name of the PulsarSource + type: string + namespace: + description: Namespace is the namespace of the PulsarSource + type: string + parallelism: + description: Parallelism is the parallelism of the PulsarSource + type: integer + processingGuarantees: + description: ProcessingGuarantees is the processing guarantees of + the PulsarSource + type: string + producerConfig: + description: ProducerConfig is the producer config of the PulsarSource + properties: + batchBuilder: + type: string + compressionType: + type: string + cryptoConfig: + description: CryptoConfig represents the configuration for the + crypto of the pulsar functions and connectors + properties: + consumerCryptoFailureAction: + type: string + cryptoKeyReaderClassName: + type: string + cryptoKeyReaderConfig: + additionalProperties: + type: string + type: object + encryptionKeys: + items: + type: string + type: array + producerCryptoFailureAction: + type: string + type: object + maxPendingMessages: + type: integer + maxPendingMessagesAcrossPartitions: + type: integer + useThreadLocalProducers: + type: boolean + type: object + resources: + description: Resources is the resources of the PulsarSource + properties: + cpu: + type: string + disk: + format: int64 + type: integer + ram: + format: int64 + type: integer + type: object + runtimeFlags: + description: RuntimeFlags is the runtime flags of the PulsarSource + type: string + schemaType: + description: SchemaType is the schema type of the PulsarSource + type: string + secrets: + additionalProperties: + description: FunctionSecretKeyRef indicates a secret name and key + properties: + key: + type: string + path: + type: string + required: + - key + - path + type: object + description: Secrets is the map of secrets of the PulsarSource + type: object + serdeClassName: + description: SerdeClassName is the serde class name of the PulsarSource + type: string + tenant: + description: Tenant is the tenant of the PulsarSource + type: string + topicName: + description: TopicName is the topic name of the PulsarSource + type: string + required: + - connectionRef + type: object + status: + description: PulsarSourceStatus defines the observed state of PulsarSource + properties: + conditions: + description: Represents the observations of a connection's current + state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsartenants.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsartenants.yaml new file mode 100644 index 00000000000..2962d68a9b8 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsartenants.yaml @@ -0,0 +1,230 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsartenants.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarTenant + listKind: PulsarTenantList + plural: pulsartenants + shortNames: + - ptenant + singular: pulsartenant + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: PulsarTenant is the Schema for the pulsartenants 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: |- + PulsarTenantSpec defines the desired state of PulsarTenant. + It corresponds to the configuration options available in Pulsar's tenant admin API. + properties: + adminRoles: + description: |- + AdminRoles is a list of roles that have administrative privileges for this tenant. + These roles can perform actions like creating namespaces, topics, and managing permissions. + items: + type: string + type: array + allowedClusters: + description: |- + AllowedClusters is a list of clusters that this tenant is allowed to access. + This field is optional and can be used to restrict the clusters a tenant can connect to. + Please use `GeoReplicationRefs` instead if you are setting up geo-replication + between multiple Pulsar instances. + items: + type: string + type: array + connectionRef: + description: |- + ConnectionRef is the reference to the PulsarConnection resource + used to connect to the Pulsar cluster for this tenant. + properties: + 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 + type: object + x-kubernetes-map-type: atomic + geoReplicationRefs: + description: |- + GeoReplicationRefs is a list of references to PulsarGeoReplication resources, + used to configure geo-replication for this tenant across multiple Pulsar instances. + This is **ONLY** used when you are using PulsarGeoReplication for setting up geo-replication + between multiple Pulsar instances. + Please use `AllowedClusters` instead if you are allowing a tenant to be available within + specific clusters in a same Pulsar instance. + items: + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. + properties: + 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 + type: object + x-kubernetes-map-type: atomic + type: array + lifecyclePolicy: + description: |- + LifecyclePolicy determines whether to keep or delete the Pulsar tenant + when the Kubernetes resource is deleted. + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + name: + description: |- + Name is the tenant name. + This field is required and must be unique within the Pulsar cluster. + type: string + required: + - connectionRef + - name + type: object + status: + description: |- + PulsarTenantStatus defines the observed state of PulsarTenant. + It contains information about the current state of the Pulsar tenant. + properties: + conditions: + description: |- + Conditions represent the latest available observations of the PulsarTenant's current state. + It follows the Kubernetes conventions for condition types and status. + The "Ready" condition type is typically used to indicate the overall status of the tenant. + Other condition types may be used to provide more detailed status information. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + This field is used to track whether the controller has processed the latest changes. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsartopics.yaml b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsartopics.yaml new file mode 100644 index 00000000000..b8444971585 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/manifests/resource.streamnative.io_pulsartopics.yaml @@ -0,0 +1,332 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: pulsartopics.resource.streamnative.io +spec: + group: resource.streamnative.io + names: + categories: + - pulsar + - pulsarres + kind: PulsarTopic + listKind: PulsarTopicList + plural: pulsartopics + shortNames: + - ptopic + singular: pulsartopic + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.name + name: RESOURCE_NAME + type: string + - jsonPath: .metadata.generation + name: GENERATION + type: string + - jsonPath: .status.observedGeneration + name: OBSERVED_GENERATION + type: string + - jsonPath: .status.conditions[?(@.type=="Ready")].status + name: READY + type: string + - jsonPath: .status.conditions[?(@.type=="PolicyReady")].status + name: POLICY_READY + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: |- + PulsarTopic is the Schema for the pulsartopics API + It represents a Pulsar topic in the Kubernetes cluster and includes both + the desired state (Spec) and the observed state (Status) of the topic. + 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: |- + PulsarTopicSpec defines the desired state of PulsarTopic. + It corresponds to the configuration options available in Pulsar's topic admin API. + properties: + backlogQuotaLimitSize: + anyOf: + - type: integer + - type: string + description: |- + BacklogQuotaLimitSize specifies the size limit for message backlog. + When the limit is reached, older messages will be removed or handled according to the retention policy. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + backlogQuotaLimitTime: + description: |- + BacklogQuotaLimitTime specifies the time limit for message backlog. + Messages older than this limit will be removed or handled according to the retention policy. + type: string + backlogQuotaRetentionPolicy: + description: |- + BacklogQuotaRetentionPolicy specifies the retention policy for messages when backlog quota is exceeded. + Valid values are "producer_request_hold", "producer_exception", or "consumer_backlog_eviction". + type: string + connectionRef: + description: |- + ConnectionRef is the reference to the PulsarConnection resource + used to connect to the Pulsar cluster for this topic. + properties: + 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 + type: object + x-kubernetes-map-type: atomic + deduplication: + description: Deduplication controls whether to enable message deduplication + for the topic. + type: boolean + geoReplicationRefs: + description: |- + GeoReplicationRefs is a list of references to PulsarGeoReplication resources, + used to configure geo-replication for this topic across multiple Pulsar instances. + This is **ONLY** used when you are using PulsarGeoReplication for setting up geo-replication + between two Pulsar instances. + items: + description: |- + LocalObjectReference contains enough information to let you locate the + referenced object inside the same namespace. + properties: + 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 + type: object + x-kubernetes-map-type: atomic + type: array + lifecyclePolicy: + description: |- + LifecyclePolicy determines whether to keep or delete the Pulsar topic + when the Kubernetes resource is deleted. + enum: + - CleanUpAfterDeletion + - KeepAfterDeletion + type: string + maxConsumers: + description: MaxConsumers sets the maximum number of consumers allowed + on the topic. + format: int32 + type: integer + maxProducers: + description: MaxProducers sets the maximum number of producers allowed + on the topic. + format: int32 + type: integer + maxUnAckedMessagesPerConsumer: + description: |- + MaxUnAckedMessagesPerConsumer sets the maximum number of unacknowledged + messages allowed for a consumer before it's blocked from receiving more messages. + format: int32 + type: integer + maxUnAckedMessagesPerSubscription: + description: |- + MaxUnAckedMessagesPerSubscription sets the maximum number of unacknowledged + messages allowed for a subscription before it's blocked from receiving more messages. + format: int32 + type: integer + messageTTL: + description: |- + MessageTTL specifies the Time to Live (TTL) for messages on the topic. + Messages older than this TTL will be automatically marked as deleted. + type: string + name: + description: Name is the topic name + type: string + partitions: + default: 0 + description: |- + Partitions specifies the number of partitions for a partitioned topic. + Set to 0 for a non-partitioned topic. + format: int32 + type: integer + persistent: + default: true + description: |- + Persistent determines if the topic is persistent (true) or non-persistent (false). + Defaults to true if not specified. + type: boolean + replicationClusters: + description: |- + ReplicationClusters is the list of clusters to which the topic is replicated + This is **ONLY** used if you are replicating clusters within the same Pulsar instance. + Please use `GeoReplicationRefs` instead if you are setting up geo-replication + between two Pulsar instances. + items: + type: string + type: array + retentionSize: + anyOf: + - type: integer + - type: string + description: |- + RetentionSize specifies the maximum size of backlog retained on the topic. + Should be set in conjunction with RetentionTime for effective retention policy. + Retention Quota must exceed configured backlog quota for topic + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + retentionTime: + description: |- + RetentionTime specifies the minimum time to retain messages on the topic. + Should be set in conjunction with RetentionSize for effective retention policy. + Retention Quota must exceed configured backlog quota for topic + type: string + schemaInfo: + description: SchemaInfo defines the schema for the topic, if any. + properties: + properties: + additionalProperties: + type: string + description: |- + Properties is a map of user-defined properties associated with the schema. + These can be used to store additional metadata about the schema. + type: object + schema: + description: |- + Schema contains the actual schema definition. + For AVRO and JSON schemas, this should be a JSON string of the schema definition. + For PROTOBUF schemas, this should be the protobuf definition string. + For BYTES or NONE schemas, this field can be empty. + type: string + type: + description: |- + Type determines how to interpret the schema data. + Valid values include: "AVRO", "JSON", "PROTOBUF", "PROTOBUF_NATIVE", "KEY_VALUE", "BYTES", or "NONE". + For KEY_VALUE schemas, use the format "KEY_VALUE(KeyType,ValueType)" where KeyType and ValueType + are one of the other schema types. + type: string + type: object + required: + - connectionRef + - name + type: object + status: + description: PulsarTopicStatus defines the observed state of PulsarTopic + properties: + conditions: + description: |- + Conditions represent the latest available observations of the PulsarTopic's current state. + It follows the Kubernetes conventions for condition types and status. + The "Ready" condition type indicates the overall status of the topic. + The "PolicyReady" condition type indicates whether the topic policies have been successfully applied. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map + geoReplicationEnabled: + description: |- + GeoReplicationEnabled indicates whether geo-replication is enabled for this topic. + This is set to true when GeoReplicationRefs are configured in the spec and successfully applied. + type: boolean + observedGeneration: + description: |- + ObservedGeneration is the most recent generation observed for this resource. + It corresponds to the metadata generation, which is updated on mutation by the API Server. + This field is used to track whether the controller has processed the latest changes. + format: int64 + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/pulsar-resources-operator/0.6.5/metadata/annotations.yaml b/operators/pulsar-resources-operator/0.6.5/metadata/annotations.yaml new file mode 100644 index 00000000000..06c2dde97df --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/metadata/annotations.yaml @@ -0,0 +1,17 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: pulsar-resources-operator + operators.operatorframework.io.bundle.channels.v1: alpha,beta,stable + operators.operatorframework.io.bundle.channel.default.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.31.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ + # OpenShift annotations. + com.redhat.openshift.versions: v4.6-v4.17 diff --git a/operators/pulsar-resources-operator/0.6.5/tests/scorecard/config.yaml b/operators/pulsar-resources-operator/0.6.5/tests/scorecard/config.yaml new file mode 100644 index 00000000000..21f1d101ef8 --- /dev/null +++ b/operators/pulsar-resources-operator/0.6.5/tests/scorecard/config.yaml @@ -0,0 +1,70 @@ +apiVersion: scorecard.operatorframework.io/v1alpha3 +kind: Configuration +metadata: + name: config +stages: +- parallel: true + tests: + - entrypoint: + - scorecard-test + - basic-check-spec + image: quay.io/operator-framework/scorecard-test:master + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:master + labels: + suite: olm + test: olm-bundle-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-validation + image: quay.io/operator-framework/scorecard-test:master + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-resources + image: quay.io/operator-framework/scorecard-test:master + labels: + suite: olm + test: olm-crds-have-resources-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:master + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:master + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {}