diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast-platform-operator.clusterserviceversion.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast-platform-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..5a17dcc2563 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast-platform-operator.clusterserviceversion.yaml @@ -0,0 +1,1109 @@ +--- +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "Cache", + "metadata": { + "name": "cache-sample" + }, + "spec": { + "hazelcastResourceName": "hazelcast" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "CronHotBackup", + "metadata": { + "name": "cronhotbackup-sample" + }, + "spec": { + "hotBackupTemplate": { + "metadata": { + "labels": { + "cron-hotbackup": "true" + } + }, + "spec": { + "hazelcastResourceName": "hazelcast" + } + }, + "schedule": "*/30 * * * *" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "Hazelcast", + "metadata": { + "name": "hazelcast" + }, + "spec": { + "clusterSize": 3, + "licenseKeySecretName": "hazelcast-license-key", + "repository": "docker.io/hazelcast/hazelcast-enterprise" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "Hazelcast", + "metadata": { + "name": "hazelcast-sample" + }, + "spec": { + "clusterSize": 3, + "jet": { + "bucketConfig": { + "bucketURI": "gs://operator-user-code/jetJobs", + "secretName": "br-secret-gcp" + }, + "enabled": true, + "resourceUploadEnabled": true + }, + "licenseKeySecretName": "hazelcast-license-key", + "repository": "docker.io/hazelcast/hazelcast-enterprise" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "HazelcastEndpoint", + "metadata": { + "name": "hazelcastendpoint-sample" + }, + "spec": { + "hazelcastResourceName": "hazelcast", + "port": 5701, + "type": "Discovery" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "HotBackup", + "metadata": { + "name": "hot-backup" + }, + "spec": { + "hazelcastResourceName": "hazelcast" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "JetJob", + "metadata": { + "name": "jet-job-longrun" + }, + "spec": { + "hazelcastResourceName": "hazelcast", + "jarName": "jet-pipeline-longrun-2.0.0.jar", + "state": "Running" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "JetJob", + "metadata": { + "name": "jet-job-sample" + }, + "spec": { + "hazelcastResourceName": "hazelcast", + "jarName": "jet-pipeline-1.0.2.jar", + "state": "Running" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "JetJobSnapshot", + "metadata": { + "name": "jetjobsnapshot-sample" + }, + "spec": { + "cancelJob": false, + "jetJobResourceName": "jet-job" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "ManagementCenter", + "metadata": { + "name": "managementcenter" + }, + "spec": { + "externalConnectivity": { + "type": "LoadBalancer" + }, + "hazelcastClusters": [ + { + "address": "hazelcast", + "name": "dev" + } + ], + "licenseKeySecretName": "hazelcast-license-key", + "persistence": { + "enabled": true, + "size": "10Gi" + }, + "repository": "hazelcast/management-center" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "Map", + "metadata": { + "name": "map" + }, + "spec": { + "hazelcastResourceName": "hazelcast" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "MultiMap", + "metadata": { + "name": "multimap-sample" + }, + "spec": { + "backupCount": 3, + "binary": true, + "collectionType": "LIST", + "hazelcastResourceName": "hazelcast" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "Queue", + "metadata": { + "name": "queue-sample" + }, + "spec": { + "hazelcastResourceName": "hazelcast" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "ReplicatedMap", + "metadata": { + "name": "replicatedmap-sample" + }, + "spec": { + "asyncFillup": true, + "hazelcastResourceName": "hazelcast", + "inMemoryFormat": "OBJECT" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "Topic", + "metadata": { + "name": "topic-sample" + }, + "spec": { + "globalOrderingEnabled": true, + "hazelcastResourceName": "hazelcast" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "UserCodeNamespace", + "metadata": { + "name": "ucn-sample" + }, + "spec": { + "bucketConfig": { + "bucketURI": "gs://operator-user-code/userCodeNamespace", + "secretName": "br-secret-gcp" + }, + "hazelcastResourceName": "hazelcast" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "VectorCollection", + "metadata": { + "labels": { + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "hazelcast-platform-operator" + }, + "name": "vectorcollection-sample" + }, + "spec": { + "hazelcastResourceName": "hazelcast", + "indexes": [ + { + "dimension": 10, + "efConstruction": 256, + "maxDegree": 32, + "metric": "Dot", + "useDeduplication": false + } + ] + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "WanReplication", + "metadata": { + "name": "wanreplication-sample" + }, + "spec": { + "endpoints": "35.192.33.252", + "resources": [ + { + "kind": "Map", + "name": "map-sample" + }, + { + "kind": "Hazelcast", + "name": "hz-sample" + } + ], + "targetClusterName": "dev" + } + }, + { + "apiVersion": "hazelcast.com/v1alpha1", + "kind": "WanSync", + "metadata": { + "name": "wansync-sample" + }, + "spec": { + "wanReplicationResourceName": "wan-replication-sample" + } + } + ] + capabilities: Full Lifecycle + categories: Database + containerImage: docker.io/hazelcast/hazelcast-platform-operator@sha256:cb2d295c1989ac1bb665d33c0f0d22b0143306214c0c2eda27bd6f95c2b5c0ff + createdAt: "2024-09-21T11:59:59Z" + description: Install Hazelcast clusters in Kubernetes environments. + features.operators.openshift.io/disconnected: "false" + 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.operatorframework.io/builder: operator-sdk-v1.34.1 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + repository: https://github.com/hazelcast/hazelcast-platform-operator/ + support: Hazelcast, Inc + name: hazelcast-platform-operator.v5.14.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: Cache is the Schema for the caches API + displayName: Cache + kind: Cache + name: caches.hazelcast.com + version: v1alpha1 + - description: CronHotBackup is the Schema for the cronhotbackups API + displayName: Cron Hot Backup + kind: CronHotBackup + name: cronhotbackups.hazelcast.com + version: v1alpha1 + - description: HazelcastEndpoint is the Schema for the hazelcastendpoints API + displayName: Hazelcast Endpoint + kind: HazelcastEndpoint + name: hazelcastendpoints.hazelcast.com + version: v1alpha1 + - description: Hazelcast is the Schema for the hazelcasts API + displayName: Hazelcast + kind: Hazelcast + name: hazelcasts.hazelcast.com + version: v1alpha1 + - description: HotBackup is the Schema for the hot backup API + displayName: Hot Backup + kind: HotBackup + name: hotbackups.hazelcast.com + version: v1alpha1 + - description: JetJob is the Schema for the jetjobs API + displayName: Jet Job + kind: JetJob + name: jetjobs.hazelcast.com + version: v1alpha1 + - description: JetJobSnapshot is the Schema for the jetjobsnapshots API + displayName: Jet Job Snapshot + kind: JetJobSnapshot + name: jetjobsnapshots.hazelcast.com + version: v1alpha1 + - description: ManagementCenter is the Schema for the managementcenters API + displayName: Management Center + kind: ManagementCenter + name: managementcenters.hazelcast.com + version: v1alpha1 + - description: Map is the Schema for the maps API + displayName: Map + kind: Map + name: maps.hazelcast.com + version: v1alpha1 + - description: MultiMap is the Schema for the multimaps API + displayName: Multi Map + kind: MultiMap + name: multimaps.hazelcast.com + version: v1alpha1 + - description: Queue is the Schema for the queues API + displayName: Queue + kind: Queue + name: queues.hazelcast.com + version: v1alpha1 + - description: ReplicatedMap is the Schema for the replicatedmaps API + displayName: Replicated Map + kind: ReplicatedMap + name: replicatedmaps.hazelcast.com + version: v1alpha1 + - description: Topic is the Schema for the topics API + displayName: Topic + kind: Topic + name: topics.hazelcast.com + version: v1alpha1 + - description: UserCodeNamespace is the Schema for the usercodenamespaces API + displayName: User Code Namespace + kind: UserCodeNamespace + name: usercodenamespaces.hazelcast.com + version: v1alpha1 + - description: VectorCollection is the Schema for the vectorcollections API + displayName: Vector Collection + kind: VectorCollection + name: vectorcollections.hazelcast.com + version: v1alpha1 + - description: WanReplication is the Schema for the wanreplications API + displayName: Wan Replication + kind: WanReplication + name: wanreplications.hazelcast.com + version: v1alpha1 + - description: WanSync is the Schema for the wansyncs API + displayName: Wan Sync + kind: WanSync + name: wansyncs.hazelcast.com + version: v1alpha1 + description: | + Easily deploy Hazelcast clusters and Management Center into Kubernetes environments and manage their lifecycles. + + ## Before You Start + + If you are planning to create Hazelcast Platform Enterprise clusters, you need to [create a secret](https://docs.hazelcast.com/operator/latest/get-started#step-2-start-the-hazelcast-cluster) for the license. You can request a trial license key from [here](https://trialrequest.hazelcast.com). + + For Hazelcast Platform clusters, you can simply continue. + + ## Documentation + + 1. [Get started](https://docs.hazelcast.com/operator/latest/get-started) with the Operator + 2. [Connect to the cluster from outside Kubernetes](https://guides.hazelcast.org/hazelcast-platform-operator-expose-externally) + 3. [Restore a Cluster from Cloud Storage with Hazelcast Platform Operator](https://docs.hazelcast.com/tutorials/hazelcast-platform-operator-external-backup-restore) + 4. [Replicate Data between Two Hazelcast Clusters with Hazelcast Platform Operator](https://docs.hazelcast.com/tutorials/hazelcast-platform-operator-wan-replication) + + ## Features + + Hazelcast Platform Operator supports the features below: + + * Custom resource for Hazelcast Platform (Enterprise) and Management Center + * Observe status of Hazelcast clusters and Management Center instances + * High Availability Mode configuration to create clusters that are resilient to node and zone failures + * Support for TLS connections between members using self-signed certificates + * Scale up and down Hazelcast clusters + * Expose Hazelcast cluster to external clients ([Smart & Unisocket](https://docs.hazelcast.com/hazelcast/latest/clients/java#java-client-operation-modes)) + * Backup Hazelcast persistence data to cloud storage with the possibility of scheduling it and restoring the data accordingly + * WAN Replication feature when you need to synchronize multiple Hazelcast clusters, which are connected by WANs + * Full and Delta WAN Sync support + * Tiered Storage support for Hazelcast and Map CRs + * CP Subsystem configuration support for Hazelcast CR + * User Code Deployment feature, which allows you to deploy custom and domain classes from cloud storages and URLs to Hazelcast members + * The User Code Namespaces feature allows you to deploy custom and domain classes at runtime without a members restart + * Support the configuration of advanced networking options + * Support Multi-namespace configuration + * ExecutorService and EntryProcessor support + * Support several data structures like Map, Topic, MultiMap, ReplicatedMap, Queue and Cache which can be created dynamically via specific Custom Resources + * MapStore, Near Cache and off-heap memory (HD memory and native memory) support for the Map CR + * Native Memory support for the Cache CR + * Support Jet configuration and Jet Job submission using the JetJob CR + * Support for exporting the snapshots of JetJob CRs using JetJobSnapshot CR + * Support for custom configurations using ConfigMap + displayName: Hazelcast Platform Operator + icon: + - base64data: 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AABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEA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awIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADImoAFAAAAQNYELAAAAACyJmABAAAAkDUBCwAAAICsCVgAAAAAZE3AAgAAACBrAhYAAAAAWROwAAAAAMiagAUAAABA1gQsAAAAALImYAEAAACQNQELAAAAgKwJWAAAAABkTcACAAAAIGsCFgAAAABZE7AAAAAAyJqABQAAAEDWBCwAAAAAsiZgAQAAAJA1AQsAAACArAlYAAAAAGRNwAIAAAAgawIWAAAAAFkTsAAAAADI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 + mediatype: image/png + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + - clusterroles + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + serviceAccountName: hazelcast-platform-controller-manager + deployments: + - label: + control-plane: controller-manager + name: hazelcast-platform-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + labels: + control-plane: controller-manager + spec: + containers: + - args: + - --leader-elect=false + command: + - /manager + env: + - name: WATCHED_NAMESPACES + valueFrom: + fieldRef: + fieldPath: metadata.annotations['olm.targetNamespaces'] + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + image: docker.io/hazelcast/hazelcast-platform-operator@sha256:cb2d295c1989ac1bb665d33c0f0d22b0143306214c0c2eda27bd6f95c2b5c0ff + imagePullPolicy: IfNotPresent + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + ports: + - containerPort: 9443 + name: webhook-server + protocol: TCP + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 200m + memory: 300Mi + requests: + cpu: 100m + memory: 100Mi + volumeMounts: + - mountPath: /tmp/k8s-webhook-server/serving-certs + name: cert + serviceAccountName: hazelcast-platform-controller-manager + terminationGracePeriodSeconds: 10 + volumes: + - emptyDir: {} + name: cert + permissions: + - rules: + - apiGroups: + - apps + resources: + - deployments + verbs: + - get + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - configmaps + - events + - pods + - secrets + - serviceaccounts + - services + - endpoints + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - apps + resources: + - statefulsets + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - hazelcast.com + resources: + - caches + - cronhotbackups + - hazelcastendpoints + - hazelcasts + - hotbackups + - jetjobs + - jetjobsnapshots + - managementcenters + - maps + - multimaps + - queues + - replicatedmaps + - topics + - usercodenamespaces + - vectorcollections + - wansyncs + - wanreplications + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - hazelcast.com + resources: + - caches/finalizers + - cronhotbackups/finalizers + - hazelcastendpoints/finalizers + - hazelcasts/finalizers + - hotbackups/finalizers + - jetjobs/finalizers + - jetjobsnapshots/finalizers + - managementcenters/finalizers + - maps/finalizers + - multimaps/finalizers + - queues/finalizers + - replicatedmaps/finalizers + - topics/finalizers + - usercodenamespaces/finalizers + - vectorcollections/finalizers + - wansyncs/finalizers + - wanreplications/finalizers + verbs: + - update + - apiGroups: + - hazelcast.com + resources: + - caches/status + - cronhotbackups/status + - hazelcastendpoints/status + - hazelcasts/status + - hotbackups/status + - jetjobs/status + - jetjobsnapshots/status + - managementcenters/status + - maps/status + - multimaps/status + - queues/status + - replicatedmaps/status + - topics/status + - usercodenamespaces/status + - vectorcollections/status + - wansyncs/status + - wanreplications/status + verbs: + - get + - patch + - update + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + - roles + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - route.openshift.io + resources: + - routes + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - route.openshift.io + resources: + - routes/custom-host + verbs: + - create + - apiGroups: + - route.openshift.io + resources: + - routes/status + verbs: + - get + serviceAccountName: hazelcast-platform-controller-manager + strategy: deployment + installModes: + - supported: true + type: OwnNamespace + - supported: true + type: SingleNamespace + - supported: true + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - hazelcast + - keyvalue + - in-memory + - database + - caching + links: + - name: Documentation + url: https://docs.hazelcast.com/operator/latest/ + - name: Source Code + url: https://github.com/hazelcast/hazelcast-platform-operator + maintainers: + - email: cloudnative@hazelcast.com + name: Hazelcast Cloud Native Team + maturity: alpha + minKubeVersion: 1.22.7 + provider: + name: Hazelcast, Inc + relatedImages: + - image: docker.io/hazelcast/hazelcast-platform-operator@sha256:cb2d295c1989ac1bb665d33c0f0d22b0143306214c0c2eda27bd6f95c2b5c0ff + name: manager + version: 5.14.0 + webhookdefinitions: + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: mhazelcast.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - hazelcasts + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-hazelcast-com-v1alpha1-hazelcast + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: mmanagementcenter.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - managementcenters + sideEffects: None + targetPort: 9443 + type: MutatingAdmissionWebhook + webhookPath: /mutate-hazelcast-com-v1alpha1-managementcenter + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Fail + generateName: vcache.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - caches + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-cache + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vcronhotbackup.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - cronhotbackups + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-cronhotbackup + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vhazelcast.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - hazelcasts + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-hazelcast + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Fail + generateName: vhazelcastendpoint.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - hazelcastendpoints + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-hazelcastendpoint + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vhotbackup.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + - DELETE + resources: + - hotbackups + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-hotbackup + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Fail + generateName: vjetjob.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - jetjobs + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-jetjob + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Fail + generateName: vjetjobsnapshot.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - jetjobsnapshots + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-jetjobsnapshot + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vmanagementcenter.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - managementcenters + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-managementcenter + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vmap.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - maps + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-map + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vmultimap.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - multimaps + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-multimap + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vqueue.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - queues + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-queue + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Fail + generateName: vreplicatedmap.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - replicatedmaps + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-replicatedmap + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vtopic.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - topics + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-topic + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Fail + generateName: vusercodenamespace.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - usercodenamespaces + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-usercodenamespace + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Fail + generateName: vvectorcollection.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - vectorcollections + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-vectorcollection + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Ignore + generateName: vwanreplication.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - wanreplications + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-wanreplication + - admissionReviewVersions: + - v1 + containerPort: 443 + deploymentName: hazelcast-platform-controller-manager + failurePolicy: Fail + generateName: vwansync.kb.io + rules: + - apiGroups: + - hazelcast.com + apiVersions: + - v1alpha1 + operations: + - CREATE + - UPDATE + resources: + - wansyncs + sideEffects: None + targetPort: 9443 + type: ValidatingAdmissionWebhook + webhookPath: /validate-hazelcast-com-v1alpha1-wansync diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast-platform-webhook-service_v1_service.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast-platform-webhook-service_v1_service.yaml new file mode 100644 index 00000000000..c98c2715fa2 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast-platform-webhook-service_v1_service.yaml @@ -0,0 +1,22 @@ +--- +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: webhook + app.kubernetes.io/created-by: hazelcast-platform-operator + app.kubernetes.io/instance: webhook-service + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: service + app.kubernetes.io/part-of: hazelcast-platform-operator + name: hazelcast-platform-webhook-service +spec: + ports: + - port: 443 + protocol: TCP + targetPort: 9443 + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_caches.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_caches.yaml new file mode 100644 index 00000000000..e9faa1f8cbc --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_caches.yaml @@ -0,0 +1,173 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: caches.hazelcast.com +spec: + group: hazelcast.com + names: + kind: Cache + listKind: CacheList + plural: caches + shortNames: + - ch + singular: cache + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Cache Config + jsonPath: .status.state + name: Status + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current Cache Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Cache is the Schema for the caches 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: |- + CacheSpec defines the desired state of Cache + It cannot be updated after the Cache is created + properties: + asyncBackupCount: + default: 0 + description: Number of asynchronous backups. + format: int32 + maximum: 6 + minimum: 0 + type: integer + backupCount: + default: 1 + description: Number of synchronous backups. + format: int32 + maximum: 6 + minimum: 0 + type: integer + eventJournal: + description: EventJournal specifies event journal configuration of + the Cache + properties: + capacity: + default: 10000 + description: Capacity sets the capacity of the ringbuffer underlying + the event journal. + format: int32 + type: integer + timeToLiveSeconds: + default: 0 + description: TimeToLiveSeconds indicates how long the items remain + in the event journal before they are expired. + format: int32 + type: integer + type: object + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource that this resource is + created for. + minLength: 1 + type: string + inMemoryFormat: + default: BINARY + description: InMemoryFormat specifies in which format data will be + stored in your cache + enum: + - BINARY + - OBJECT + - NATIVE + type: string + keyType: + description: Class name of the key type + type: string + name: + description: |- + Name of the data structure config to be created. If empty, CR name will be used. + It cannot be updated after the config is created successfully. + type: string + persistenceEnabled: + default: false + description: When enabled, cache data will be persisted. + type: boolean + userCodeNamespace: + description: Name of the User Code Namespace applied to this instance + minLength: 1 + type: string + valueType: + description: Class name of the value type + type: string + required: + - hazelcastResourceName + type: object + x-kubernetes-validations: + - message: the sum of backupCount and asyncBackupCount can't be larger + than 6 + rule: (self.backupCount + self.asyncBackupCount) <= 6 + status: + description: CacheStatus defines the observed state of Cache + properties: + memberStatuses: + additionalProperties: + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + description: Holds status of data structure for each Hazelcast member + type: object + message: + description: Message explaining the current state + type: string + state: + description: State of the data structure + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_cronhotbackups.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_cronhotbackups.yaml new file mode 100644 index 00000000000..4b82e4324d7 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_cronhotbackups.yaml @@ -0,0 +1,146 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: cronhotbackups.hazelcast.com +spec: + group: hazelcast.com + names: + kind: CronHotBackup + listKind: CronHotBackupList + plural: cronhotbackups + shortNames: + - chb + singular: cronhotbackup + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Suspention status of the CronHotBackup + jsonPath: .spec.suspend + name: SUSPENDED + type: boolean + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hotBackupTemplate.spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: CronHotBackup is the Schema for the cronhotbackups 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: CronHotBackupSpec defines the desired state of CronHotBackup + properties: + failedHotBackupsHistoryLimit: + default: 3 + description: The number of failed finished hot backups to retain. + format: int32 + minimum: 0 + type: integer + hotBackupTemplate: + description: Specifies the hot backup that will be created when executing + a CronHotBackup. + properties: + metadata: + description: Standard object's metadata of the hot backups created + from this template. + type: object + x-kubernetes-preserve-unknown-fields: true + spec: + description: Specification of the desired behavior of the hot + backup. + properties: + bucketURI: + description: |- + URL of the bucket to download HotBackup folders. + AWS S3, GCP Bucket and Azure Blob storage buckets are supported. + Example bucket URIs: + - AWS S3 -> s3://bucket-name/path/to/folder + - GCP Bucket -> gs://bucket-name/path/to/folder + - Azure Blob -> azblob://bucket-name/path/to/folder + type: string + hazelcastResourceName: + description: HazelcastResourceName defines the name of the + Hazelcast resource + type: string + secret: + description: secret is a deprecated alias for secretName. + type: string + secretName: + description: Name of the secret with credentials for cloud + providers. + type: string + required: + - hazelcastResourceName + type: object + required: + - spec + type: object + schedule: + description: "Schedule contains a crontab-like expression that defines + the schedule in which HotBackup will be started.\nIf the Schedule + is empty the HotBackup will start only once when applied.\n---\nSeveral + pre-defined schedules in place of a cron expression can be used.\n\tEntry + \ | Description | + Equivalent To\n\t----- | ----------- | + -------------\n\t@yearly (or @annually) | Run once a year, midnight, + Jan. 1st | 0 0 1 1 *\n\t@monthly | Run once + a month, midnight, first of month | 0 0 1 * *\n\t@weekly | + Run once a week, midnight between Sat/Sun | 0 0 * * 0\n\t@daily + (or @midnight) | Run once a day, midnight | 0 + 0 * * *\n\t@hourly | Run once an hour, beginning + of hour | 0 * * * *" + minLength: 1 + type: string + successfulHotBackupsHistoryLimit: + default: 5 + description: The number of successful finished hot backups to retain. + format: int32 + minimum: 0 + type: integer + suspend: + default: false + description: When true, CronHotBackup will stop creating HotBackup + CRs until it is disabled + type: boolean + required: + - hotBackupTemplate + - schedule + type: object + status: + description: CronHotBackupStatus defines the observed state of CronHotBackup + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hazelcastendpoints.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hazelcastendpoints.yaml new file mode 100644 index 00000000000..cf156c55c2b --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hazelcastendpoints.yaml @@ -0,0 +1,105 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: hazelcastendpoints.hazelcast.com +spec: + group: hazelcast.com + names: + kind: HazelcastEndpoint + listKind: HazelcastEndpointList + plural: hazelcastendpoints + shortNames: + - hzep + singular: hazelcastendpoint + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Type of the HazelcastEndpoint + jsonPath: .spec.type + name: Type + type: string + - description: Address of the HazelcastEndpoint + jsonPath: .status.address + name: Address + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current HazelcastEndpoint + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: HazelcastEndpoint is the Schema for the hazelcastendpoints 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: HazelcastEndpointSpec defines the desired state of HazelcastEndpoint + properties: + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource that this resource is + created for. + minLength: 1 + type: string + port: + description: Port of the endpoint. + format: int32 + type: integer + type: + description: Type defines the endpoint connection. It is used to identify + the target of the endpoint. + enum: + - Discovery + - Member + - WAN + type: string + required: + - hazelcastResourceName + - port + - type + type: object + status: + description: HazelcastEndpointStatus defines the observed state of HazelcastEndpoint + properties: + address: + description: Address is the external address of the endpoint. It is + taken from the corresponding service. + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hazelcasts.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hazelcasts.yaml new file mode 100644 index 00000000000..ac00744ed46 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hazelcasts.yaml @@ -0,0 +1,2564 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: hazelcasts.hazelcast.com +spec: + group: hazelcast.com + names: + kind: Hazelcast + listKind: HazelcastList + plural: hazelcasts + shortNames: + - hz + singular: hazelcast + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Hazelcast deployment + jsonPath: .status.phase + name: Status + type: string + - description: Current numbers of ready Hazelcast members + jsonPath: .status.hazelcastClusterStatus.readyMembers + name: Members + type: string + - description: Message for the current Hazelcast Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Hazelcast is the Schema for the hazelcasts 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: HazelcastSpec defines the desired state of Hazelcast + properties: + advancedNetwork: + description: Hazelcast Advanced Network configuration + properties: + clientServerSocketEndpointConfig: + properties: + interfaces: + items: + type: string + type: array + type: object + memberServerSocketEndpointConfig: + properties: + interfaces: + items: + type: string + type: array + type: object + wan: + items: + properties: + name: + default: default + maxLength: 8 + type: string + port: + default: 5710 + maximum: 65535 + type: integer + portCount: + description: 'DEPRECATED: PortCount is deprecated. The actual + value is always 1 regardless of the given value.' + type: integer + serviceType: + default: LoadBalancer + description: WANServiceType describes the service type where + the wan ports are exposed + enum: + - ClusterIP + - NodePort + - LoadBalancer + - WithExposeExternally + type: string + type: object + type: array + type: object + agent: + default: + repository: docker.io/hazelcast/platform-operator-agent + version: latest-snapshot + description: B&R Agent configurations + properties: + repository: + default: docker.io/hazelcast/platform-operator-agent + description: Repository to pull Hazelcast Platform Operator Agent(https://github.com/hazelcast/platform-operator-agent) + type: string + resources: + description: Compute Resources required by the Agent container. + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. + properties: + name: + description: |- + Name must match the name of one entry in pod.spec.resourceClaims of + the Pod where this field is used. It makes that resource available + inside a container. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + version: + default: latest-snapshot + description: Version of Hazelcast Platform Operator Agent. + type: string + type: object + annotations: + additionalProperties: + type: string + description: Hazelcast Kubernetes resource annotations + type: object + clusterName: + default: dev + description: Name of the Hazelcast cluster. + type: string + clusterSize: + default: 3 + description: Number of Hazelcast members in the cluster. + format: int32 + maximum: 300 + minimum: 0 + type: integer + cpSubsystem: + description: CPSubsystem is the configuration of the Hazelcast CP + Subsystem. + properties: + dataLoadTimeoutSeconds: + description: DataLoadTimeoutSeconds is the timeout duration in + seconds for CP members to restore their persisted data from + disk + format: int32 + minimum: 1 + type: integer + failOnIndeterminateOperationState: + description: FailOnIndeterminateOperationState indicated whether + CP Subsystem operations use at-least-once and at-most-once execution + guarantees. + type: boolean + missingCpMemberAutoRemovalSeconds: + description: MissingCpMemberAutoRemovalSeconds is the duration + in seconds to wait before automatically removing a missing CP + member from the CP Subsystem. + format: int32 + type: integer + pvc: + description: PVC is the configuration of PersistenceVolumeClaim. + properties: + accessModes: + description: |- + AccessModes contains the actual access modes of the volume backing the PVC has. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + items: + type: string + type: array + requestStorage: + anyOf: + - type: integer + - type: string + default: 8Gi + description: A description of the PVC request capacity. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageClassName: + description: Name of StorageClass which this persistent volume + belongs to. + type: string + type: object + sessionHeartbeatIntervalSeconds: + description: |- + SessionHeartbeatIntervalSeconds Interval in seconds for the periodically committed CP session heartbeats. + Must be smaller than SessionTTLSeconds. + format: int32 + type: integer + sessionTTLSeconds: + description: |- + SessionTTLSeconds is the duration for a CP session to be kept alive after the last received heartbeat. + Must be greater than or equal to SessionHeartbeatIntervalSeconds and smaller than or equal to MissingCpMemberAutoRemovalSeconds. + format: int32 + type: integer + type: object + customConfigCmName: + description: |- + Name of the ConfigMap with the Hazelcast custom configuration. + This configuration from the ConfigMap might be overridden by the Hazelcast CR configuration. + type: string + customConfigSecretName: + description: |- + Name of the Secret with the Hazelcast custom configuration. + This configuration from the ConfigMap might be overridden by the Hazelcast CR configuration. + type: string + durableExecutorServices: + description: Durable Executor Service configurations, see https://docs.hazelcast.com/hazelcast/latest/computing/durable-executor-service + items: + properties: + capacity: + default: 100 + description: Capacity of the executor task per partition. + format: int32 + type: integer + durability: + default: 1 + description: Durability of the executor. + format: int32 + minimum: 1 + type: integer + name: + default: default + description: The name of the executor service + type: string + poolSize: + default: 16 + description: The number of executor threads per member. + format: int32 + minimum: 1 + type: integer + userCodeNamespace: + description: Name of the User Code Namespace applied to this + instance + minLength: 1 + type: string + type: object + type: array + env: + description: Env configuration of environment variables + items: + description: EnvVar represents an environment variable present in + a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: |- + Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the container and + any service environment variables. If a variable cannot be resolved, + the reference in the input string will be unchanged. Double $$ are reduced + to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + Escaped references will never be expanded, regardless of whether the variable + exists or not. + Defaults to "". + type: string + valueFrom: + description: Source for the environment variable's value. Cannot + be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + type: string + optional: + description: Specify whether the ConfigMap or its key + must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: |- + Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + properties: + apiVersion: + description: Version of the schema the FieldPath is + written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified + API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: |- + Selects a resource of the container: only resources limits and requests + (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + properties: + containerName: + description: 'Container name: required for volumes, + optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed + resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must + be a valid secret key. + type: string + name: + description: |- + Name of the referent. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid? + type: string + optional: + description: Specify whether the Secret or its key must + be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + x-kubernetes-validations: + - message: Environment variables cannot start with 'HZ_'. Use customConfigCmName + to configure Hazelcast. + rule: self.all(env, env.name.startsWith('HZ_') == false) + - message: Environment variable name cannot be empty. + rule: self.all(env, env.name != '') + executorServices: + description: Java Executor Service configurations, see https://docs.hazelcast.com/hazelcast/latest/computing/executor-service + items: + properties: + name: + default: default + description: The name of the executor service + type: string + poolSize: + default: 8 + description: The number of executor threads per member. + format: int32 + minimum: 1 + type: integer + queueCapacity: + default: 0 + description: Task queue capacity of the executor. + format: int32 + type: integer + userCodeNamespace: + description: Name of the User Code Namespace applied to this + instance + minLength: 1 + type: string + type: object + type: array + exposeExternally: + description: Configuration to expose Hazelcast cluster to external + clients. + properties: + discoveryServiceType: + default: LoadBalancer + description: Type of the service used to discover Hazelcast cluster. + type: string + memberAccess: + description: |- + How each member is accessed from the external client. + Only available for "Smart" client and valid values are: + - "NodePortExternalIP" (default): each member is accessed by the NodePort service and the node external IP/hostname + - "NodePortNodeName": each member is accessed by the NodePort service and the node name + - "LoadBalancer": each member is accessed by the LoadBalancer service external address + enum: + - NodePortExternalIP + - NodePortNodeName + - LoadBalancer + type: string + type: + default: Smart + description: |- + Specifies how members are exposed. + Valid values are: + - "Smart" (default): each member pod is exposed with a separate external address + - "Unisocket": all member pods are exposed with one external address + enum: + - Smart + - Unisocket + type: string + type: object + highAvailabilityMode: + description: Configuration to create clusters resilient to node and + zone failures + enum: + - NODE + - ZONE + type: string + imagePullPolicy: + default: IfNotPresent + description: Pull policy for the Hazelcast Platform image + type: string + imagePullSecrets: + description: Image pull secrets for the Hazelcast Platform image + 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 + jet: + default: + enabled: true + resourceUploadEnabled: false + description: Jet Engine configuration + properties: + bucketConfig: + description: Bucket config from where the JAR files will be downloaded. + properties: + bucketURI: + description: |- + URL of the bucket to download HotBackup folders. + AWS S3, GCP Bucket and Azure Blob storage buckets are supported. + Example bucket URIs: + - AWS S3 -> s3://bucket-name/path/to/folder + - GCP Bucket -> gs://bucket-name/path/to/folder + - Azure Blob -> azblob://bucket-name/path/to/folder + minLength: 6 + type: string + secret: + description: secret is a deprecated alias for secretName. + type: string + secretName: + description: Name of the secret with credentials for cloud + providers. + type: string + required: + - bucketURI + type: object + configMaps: + description: Names of the list of ConfigMaps. Files in each ConfigMap + will be downloaded. + items: + type: string + type: array + edgeDefaults: + default: {} + description: Jet Edge Defaults Configuration + properties: + packetSizeLimit: + description: Limits the size of the packet in bytes. + format: int32 + type: integer + queueSize: + description: Sets the capacity of processor-to-processor concurrent + queues. + format: int32 + type: integer + receiveWindowMultiplier: + description: Sets the scaling factor used by the adaptive + receive window sizing function. + type: integer + type: object + enabled: + default: true + description: When false, disables Jet Engine. + type: boolean + instance: + default: {} + description: Jet Instance Configuration + properties: + backupCount: + default: 1 + description: The number of synchronous backups to configure + on the IMap that Jet needs internally to store job metadata + and snapshots. + format: int32 + maximum: 6 + type: integer + cooperativeThreadCount: + description: |- + The number of threads Jet creates in its cooperative multithreading pool. + Its default value is the number of cores + format: int32 + minimum: 1 + type: integer + flowControlPeriodMillis: + default: 100 + description: The duration of the interval between flow-control + packets. + format: int32 + type: integer + losslessRestartEnabled: + default: false + description: Specifies whether the Lossless Cluster Restart + feature is enabled. + type: boolean + maxProcessorAccumulatedRecords: + description: |- + Specifies the maximum number of records that can be accumulated by any single processor instance. + Default value is Long.MAX_VALUE + format: int64 + type: integer + scaleUpDelayMillis: + default: 10000 + description: The delay after which the auto-scaled jobs restart + if a new member joins the cluster. + format: int32 + type: integer + type: object + remoteURLs: + description: List of URLs from where the files will be downloaded. + items: + type: string + type: array + resourceUploadEnabled: + default: false + description: When true, enables resource uploading for Jet jobs. + type: boolean + type: object + jvm: + description: Hazelcast JVM configuration + properties: + args: + description: Args is for arbitrary JVM arguments + items: + type: string + type: array + gc: + description: GC is for configuring JVM Garbage Collector + properties: + collector: + description: Collector is the Garbage Collector type + enum: + - Serial + - Parallel + - G1 + type: string + logging: + description: Logging enables logging when set to true + type: boolean + type: object + memory: + description: Memory is a JVM memory configuration + properties: + initialRAMPercentage: + description: InitialRAMPercentage configures JVM initial heap + size + type: string + maxRAMPercentage: + description: MaxRAMPercentage sets the maximum heap size for + a JVM + type: string + minRAMPercentage: + description: MinRAMPercentage sets the minimum heap size for + a JVM + type: string + type: object + type: object + labels: + additionalProperties: + type: string + description: Hazelcast Kubernetes resource labels + type: object + licenseKeySecret: + description: licenseKeySecret is a deprecated alias for licenseKeySecretName. + type: string + licenseKeySecretName: + description: Name of the secret with Hazelcast Enterprise License + Key. + minLength: 1 + type: string + localDevices: + description: Hazelcast LocalDevice configuration + items: + properties: + blockSize: + default: 4096 + description: BlockSize defines Device block/sector size in bytes. + format: int32 + minimum: 512 + type: integer + name: + description: Name represents the name of the local device + type: string + pvc: + description: Configuration of PersistenceVolumeClaim. + properties: + accessModes: + description: |- + AccessModes contains the actual access modes of the volume backing the PVC has. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + items: + type: string + type: array + requestStorage: + anyOf: + - type: integer + - type: string + default: 8Gi + description: A description of the PVC request capacity. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageClassName: + description: Name of StorageClass which this persistent + volume belongs to. + type: string + type: object + readIOThreadCount: + default: 4 + description: ReadIOThreadCount is Read IO thread count. + format: int32 + minimum: 1 + type: integer + writeIOThreadCount: + default: 4 + description: WriteIOThreadCount is Write IO thread count. + format: int32 + minimum: 1 + type: integer + required: + - name + type: object + type: array + loggingLevel: + default: INFO + description: Logging level for Hazelcast members + enum: + - "OFF" + - FATAL + - ERROR + - WARN + - INFO + - DEBUG + - TRACE + - ALL + type: string + managementCenter: + description: Hazelcast Management Center Configuration + properties: + consoleEnabled: + default: false + description: Allows you to execute commands from a built-in console + in the user interface. + type: boolean + dataAccessEnabled: + default: false + description: Allows you to access contents of Hazelcast data structures + via SQL Browser or Map Browser. + type: boolean + scriptingEnabled: + default: false + description: Allows you to execute scripts that can automate interactions + with the cluster. + type: boolean + type: object + nativeMemory: + description: Hazelcast Native Memory (HD Memory) configuration + properties: + allocatorType: + default: STANDARD + description: AllocatorType specifies one of 2 types of mechanism + for allocating memory to HD + enum: + - STANDARD + - POOLED + type: string + metadataSpacePercentage: + default: 12 + description: |- + MetadataSpacePercentage defines percentage of the allocated native memory + that is used for the metadata of other map components such as index + (for predicates), offset, etc. + format: int32 + type: integer + minBlockSize: + description: |- + MinBlockSize is the size of smallest block that will be allocated. + It is used only by the POOLED memory allocator. + format: int32 + type: integer + pageSize: + default: 4194304 + description: |- + PageSize is the size of the page in bytes to allocate memory as a block. + It is used only by the POOLED memory allocator. + format: int32 + type: integer + size: + anyOf: + - type: integer + - type: string + default: 512M + description: Size of the total native memory to allocate + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + persistence: + description: Persistence configuration + properties: + baseDir: + description: BaseDir is deprecated. Use restore.localConfig to + restore from a local backup. + type: string + clusterDataRecoveryPolicy: + default: PartialRecoveryMostComplete + description: Configuration of the cluster recovery strategy. + enum: + - FullRecoveryOnly + - PartialRecoveryMostRecent + - PartialRecoveryMostComplete + type: string + dataRecoveryTimeout: + description: |- + DataRecoveryTimeout is timeout for each step of data recovery in seconds. + Maximum timeout is equal to DataRecoveryTimeout*2 (for each step: validation and data-load). + format: int32 + type: integer + pvc: + description: Configuration of PersistenceVolumeClaim. + properties: + accessModes: + description: |- + AccessModes contains the actual access modes of the volume backing the PVC has. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + items: + type: string + type: array + requestStorage: + anyOf: + - type: integer + - type: string + default: 8Gi + description: A description of the PVC request capacity. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageClassName: + description: Name of StorageClass which this persistent volume + belongs to. + type: string + type: object + restore: + default: {} + description: Restore configuration + maxProperties: 1 + properties: + bucketConfig: + description: Bucket Configuration from which the backup will + be downloaded. + properties: + bucketURI: + description: |- + URL of the bucket to download HotBackup folders. + AWS S3, GCP Bucket and Azure Blob storage buckets are supported. + Example bucket URIs: + - AWS S3 -> s3://bucket-name/path/to/folder + - GCP Bucket -> gs://bucket-name/path/to/folder + - Azure Blob -> azblob://bucket-name/path/to/folder + minLength: 6 + type: string + secret: + description: secret is a deprecated alias for secretName. + type: string + secretName: + description: Name of the secret with credentials for cloud + providers. + type: string + required: + - bucketURI + type: object + hotBackupResourceName: + description: Name of the HotBackup resource from which backup + will be fetched. + type: string + localConfig: + description: Configuration to restore from local backup + properties: + backupDir: + description: Local backup base directory + type: string + backupFolder: + description: Backup directory + minLength: 1 + type: string + baseDir: + description: Persistence base directory + type: string + pvcNamePrefix: + default: persistence + description: PVC name prefix used in existing PVCs + enum: + - persistence + - hot-restart-persistence + type: string + type: object + type: object + startupAction: + description: |- + DEPRECATED: DeprecatedStartupAction is deprecated. Use ClusterDataRecoveryPolicy PartialRecoveryMostComplete instead. + DeprecatedStartupAction represents the action triggered when the cluster starts to force the cluster startup. + enum: + - ForceStart + - PartialStart + type: string + type: object + properties: + additionalProperties: + type: string + description: Hazelcast system properties, see https://docs.hazelcast.com/hazelcast/latest/system-properties + type: object + repository: + default: docker.io/hazelcast/hazelcast-enterprise + description: Repository to pull the Hazelcast Platform image from. + type: string + resources: + description: Compute Resources required by the Hazelcast container. + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. + properties: + name: + description: |- + Name must match the name of one entry in pod.spec.resourceClaims of + the Pod where this field is used. It makes that resource available + inside a container. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + scheduledExecutorServices: + description: Scheduled Executor Service configurations, see https://docs.hazelcast.com/hazelcast/latest/computing/scheduled-executor-service + items: + properties: + capacity: + default: 100 + description: Capacity of the executor task per partition. + format: int32 + type: integer + capacityPolicy: + default: PER_NODE + description: The active policy for the capacity setting. + type: string + durability: + default: 1 + description: Durability of the executor. + format: int32 + minimum: 1 + type: integer + name: + default: default + description: The name of the executor service + type: string + poolSize: + default: 16 + description: The number of executor threads per member. + format: int32 + minimum: 1 + type: integer + userCodeNamespace: + description: Name of the User Code Namespace applied to this + instance + minLength: 1 + type: string + type: object + type: array + scheduling: + description: Scheduling details + properties: + affinity: + description: Affinity + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node matches the corresponding matchExpressions; the + node(s) with the highest sum are the most preferred. + items: + description: |- + An empty preferred scheduling term matches all objects with implicit weight 0 + (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with + the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an update), the system + may or may not try to eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: |- + A null or empty node selector term matches no objects. The requirements of + them are ANDed. + The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + type: array + x-kubernetes-list-type: atomic + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: |- + weight associated with matching the corresponding podAffinityTerm, + in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod label update), the + system may or may not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes corresponding to each + podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: |- + Defines a set of pods (namely those matching the labelSelector + relative to the given namespace(s)) that this pod should be + co-located (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node whose value of + the label with key matches that of any node on which + a pod of the set of pods is running + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + x-kubernetes-list-type: atomic + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the anti-affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: |- + weight associated with matching the corresponding podAffinityTerm, + in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the anti-affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the anti-affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod label update), the + system may or may not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes corresponding to each + podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: |- + Defines a set of pods (namely those matching the labelSelector + relative to the given namespace(s)) that this pod should be + co-located (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node whose value of + the label with key matches that of any node on which + a pod of the set of pods is running + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: object + nodeSelector: + additionalProperties: + type: string + description: NodeSelector + type: object + tolerations: + description: Tolerations + items: + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . + properties: + effect: + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. + type: string + operator: + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. + type: string + tolerationSeconds: + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. + type: string + type: object + type: array + topologySpreadConstraints: + description: TopologySpreadConstraints + items: + description: TopologySpreadConstraint specifies how to spread + matching pods among the given topology. + properties: + labelSelector: + description: |- + LabelSelector is used to find matching pods. + Pods that match this label selector are counted to determine the number of pods + in their corresponding topology domain. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select the pods over which + spreading will be calculated. The keys are used to lookup values from the + incoming pod labels, those key-value labels are ANDed with labelSelector + to select the group of existing pods over which spreading will be calculated + for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + MatchLabelKeys cannot be set when LabelSelector isn't set. + Keys that don't exist in the incoming pod labels will + be ignored. A null or empty list means only match against labelSelector. + + + This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + description: |- + MaxSkew describes the degree to which pods may be unevenly distributed. + When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference + between the number of matching pods in the target topology and the global minimum. + The global minimum is the minimum number of matching pods in an eligible domain + or zero if the number of eligible domains is less than MinDomains. + For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same + labelSelector spread as 2/2/1: + In this case, the global minimum is 1. + | zone1 | zone2 | zone3 | + | P P | P P | P | + - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; + scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) + violate MaxSkew(1). + - if MaxSkew is 2, incoming pod can be scheduled onto any zone. + When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence + to topologies that satisfy it. + It's a required field. Default value is 1 and 0 is not allowed. + format: int32 + type: integer + minDomains: + description: |- + MinDomains indicates a minimum number of eligible domains. + When the number of eligible domains with matching topology keys is less than minDomains, + Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. + And when the number of eligible domains with matching topology keys equals or greater than minDomains, + this value has no effect on scheduling. + As a result, when the number of eligible domains is less than minDomains, + scheduler won't schedule more than maxSkew Pods to those domains. + If value is nil, the constraint behaves as if MinDomains is equal to 1. + Valid values are integers greater than 0. + When value is not nil, WhenUnsatisfiable must be DoNotSchedule. + + + For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same + labelSelector spread as 2/2/2: + | zone1 | zone2 | zone3 | + | P P | P P | P P | + The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. + In this situation, new pod with the same labelSelector cannot be scheduled, + because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, + it will violate MaxSkew. + format: int32 + type: integer + nodeAffinityPolicy: + description: |- + NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector + when calculating pod topology spread skew. Options are: + - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + + + If this value is nil, the behavior is equivalent to the Honor policy. + This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. + type: string + nodeTaintsPolicy: + description: |- + NodeTaintsPolicy indicates how we will treat node taints when calculating + pod topology spread skew. Options are: + - Honor: nodes without taints, along with tainted nodes for which the incoming pod + has a toleration, are included. + - Ignore: node taints are ignored. All nodes are included. + + + If this value is nil, the behavior is equivalent to the Ignore policy. + This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. + type: string + topologyKey: + description: |- + TopologyKey is the key of node labels. Nodes that have a label with this key + and identical values are considered to be in the same topology. + We consider each as a "bucket", and try to put balanced number + of pods into each bucket. + We define a domain as a particular instance of a topology. + Also, we define an eligible domain as a domain whose nodes meet the requirements of + nodeAffinityPolicy and nodeTaintsPolicy. + e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. + And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. + It's a required field. + type: string + whenUnsatisfiable: + description: |- + WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy + the spread constraint. + - DoNotSchedule (default) tells the scheduler not to schedule it. + - ScheduleAnyway tells the scheduler to schedule the pod in any location, + but giving higher precedence to topologies that would help reduce the + skew. + A constraint is considered "Unsatisfiable" for an incoming pod + if and only if every possible node assignment for that pod would violate + "MaxSkew" on some topology. + For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same + labelSelector spread as 3/1/1: + | zone1 | zone2 | zone3 | + | P P P | P | P | + If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled + to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies + MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler + won't make it *more* imbalanced. + It's a required field. + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + type: object + serialization: + description: Hazelcast serialization configuration + properties: + allowUnsafe: + default: false + description: Allow the usage of unsafe. + type: boolean + byteOrder: + default: BigEndian + description: Specifies the byte order that the serialization will + use. + enum: + - Native + - BigEndian + - LittleEndian + type: string + compactSerialization: + description: Configuration attributes the compact serialization. + minProperties: 1 + properties: + classes: + description: Classes is the list of class names for which + a zero-config serializer will be registered, without implementing + an explicit serializer. + items: + type: string + type: array + serializers: + description: Serializers is the list of explicit serializers + to be registered. + items: + type: string + type: array + type: object + dataSerializableFactories: + description: Lists class implementations of Hazelcast's DataSerializableFactory. + items: + type: string + type: array + enableCompression: + default: false + description: Enables compression when default Java serialization + is used. + type: boolean + enableSharedObject: + default: false + description: Enables shared object when default Java serialization + is used. + type: boolean + globalSerializer: + description: List of global serializers. + properties: + className: + description: Class name of the GlobalSerializer. + type: string + overrideJavaSerialization: + description: If set to true, will replace the internal Java + serialization. + type: boolean + required: + - className + type: object + javaSerializationFilter: + description: Blacklist and whitelist for deserialized classes + when Java serialization is used. + minProperties: 1 + properties: + blacklist: + description: Java deserialization protection Blacklist. + minProperties: 1 + properties: + classes: + description: List of class names to be filtered. + items: + type: string + type: array + packages: + description: List of packages to be filtered + items: + type: string + type: array + prefixes: + description: List of prefixes to be filtered. + items: + type: string + type: array + type: object + whitelist: + description: Java deserialization protection Whitelist. + minProperties: 1 + properties: + classes: + description: List of class names to be filtered. + items: + type: string + type: array + packages: + description: List of packages to be filtered + items: + type: string + type: array + prefixes: + description: List of prefixes to be filtered. + items: + type: string + type: array + type: object + type: object + overrideDefaultSerializers: + default: false + description: Allows override of built-in default serializers. + type: boolean + portableFactories: + description: Lists class implementations of Hazelcast's PortableFactory. + items: + type: string + type: array + serializers: + description: List of serializers (classes) that implemented using + Hazelcast's StreamSerializer, ByteArraySerializer etc. + items: + description: Serializer allows to plug in a custom serializer + for serializing objects. + properties: + className: + description: Class name of the implementation of the serializer + class. + type: string + typeClass: + description: Name of the class that will be serialized via + this implementation. + type: string + required: + - className + - typeClass + type: object + type: array + type: object + serviceAccountName: + description: |- + ServiceAccountName is the name of the ServiceAccount to use to run Hazelcast cluster. + More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ + type: string + sql: + description: Hazelcast SQL configuration + properties: + catalogPersistenceEnabled: + default: false + description: |- + CatalogPersistenceEnabled sets whether SQL Catalog persistence is enabled for the node. + With SQL Catalog persistence enabled you can restart the whole cluster without + losing schema definition objects (such as MAPPINGs, TYPEs, VIEWs and DATA CONNECTIONs). + The feature is implemented on top of the Hot Restart feature of Hazelcast + which persists the data to disk. If enabled, you have to also configure + Hot Restart. Feature is disabled by default. + type: boolean + statementTimeout: + default: 0 + description: |- + StatementTimeout defines the timeout in milliseconds that is applied + to queries without an explicit timeout. + format: int32 + type: integer + type: object + tls: + description: Hazelcast TLS configuration + properties: + mutualAuthentication: + default: None + description: |- + Mutual authentication configuration. It’s None by default which + means the client side of connection is not authenticated. + enum: + - None + - Required + - Optional + type: string + secretName: + description: Name of the secret with TLS certificate and key. + type: string + required: + - secretName + type: object + userCodeDeployment: + description: User Codes to Download into CLASSPATH + properties: + bucketConfig: + description: Bucket config from where the JAR files will be downloaded. + properties: + bucketURI: + description: |- + URL of the bucket to download HotBackup folders. + AWS S3, GCP Bucket and Azure Blob storage buckets are supported. + Example bucket URIs: + - AWS S3 -> s3://bucket-name/path/to/folder + - GCP Bucket -> gs://bucket-name/path/to/folder + - Azure Blob -> azblob://bucket-name/path/to/folder + minLength: 6 + type: string + secret: + description: secret is a deprecated alias for secretName. + type: string + secretName: + description: Name of the secret with credentials for cloud + providers. + type: string + required: + - bucketURI + type: object + clientEnabled: + description: When true, allows user code deployment from clients. + type: boolean + configMaps: + description: Names of the list of ConfigMaps. Files in each ConfigMap + will be downloaded. + items: + type: string + type: array + remoteURLs: + description: List of URLs from where the files will be downloaded. + items: + type: string + type: array + triggerSequence: + description: A string for triggering a rolling restart for re-downloading + the user code. + type: string + type: object + userCodeNamespaces: + description: UserCodeNamespaces provide a container for Java classpath + resources, such as user code and accompanying artifacts like property + files + properties: + classFilter: + description: Blacklist and whitelist for classes when User Code + Namespaces is used. + minProperties: 1 + properties: + blacklist: + description: Java deserialization protection Blacklist. + minProperties: 1 + properties: + classes: + description: List of class names to be filtered. + items: + type: string + type: array + packages: + description: List of packages to be filtered + items: + type: string + type: array + prefixes: + description: List of prefixes to be filtered. + items: + type: string + type: array + type: object + whitelist: + description: Java deserialization protection Whitelist. + minProperties: 1 + properties: + classes: + description: List of class names to be filtered. + items: + type: string + type: array + packages: + description: List of packages to be filtered + items: + type: string + type: array + prefixes: + description: List of prefixes to be filtered. + items: + type: string + type: array + type: object + type: object + type: object + version: + default: 5.5.1 + description: Version of Hazelcast Platform. + type: string + required: + - licenseKeySecretName + type: object + x-kubernetes-validations: + - message: ConfigMap and Secret cannot be used for Custom Config at the + same time. + rule: '!has(self.customConfigCmName) || !has(self.customConfigSecretName)' + status: + description: HazelcastStatus defines the observed state of Hazelcast + properties: + clusterSize: + description: Number of Hazelcast members in the cluster. + format: int32 + type: integer + hazelcastClusterStatus: + description: Status of the Hazelcast cluster + properties: + readyMembers: + description: |- + ReadyMembers represents the number of members that are connected to cluster from the desired number of members + in the format / + type: string + type: object + members: + description: Status of Hazelcast members + items: + description: HazelcastMemberStatus defines the observed state of + the individual Hazelcast member. + properties: + connected: + description: |- + Ready is the flag that is set to true when the member is successfully started, + connected to cluster and ready to accept connections. + type: boolean + ip: + description: Ip is the IP address of the member within the cluster. + type: string + lite: + description: Lite is the flag that is true when the member is + lite-member. + type: boolean + master: + description: Master flag is set to true if the member is master. + type: boolean + message: + description: Message contains the optional message with the + details of the cluster state. + type: string + ownedPartitions: + description: OwnedPartitions represents the partitions count + on the member. + format: int32 + type: integer + podName: + description: PodName is the name of the Hazelcast member pod. + type: string + reason: + description: Reason contains the optional reason of member crash + or restart. + type: string + restartCount: + description: RestartCount is the number of times the member + has been restarted. + format: int32 + type: integer + state: + description: State represents the observed state of the member. + enum: + - PASSIVE + - ACTIVE + - SHUT_DOWN + - STARTING + type: string + uid: + description: Uid is the unique member identifier within the + cluster. + type: string + version: + description: Version represents the Hazelcast version of the + member. + type: string + type: object + type: array + message: + description: Message about the Hazelcast cluster state + type: string + phase: + description: Phase of the Hazelcast cluster + enum: + - Running + - Failed + - Pending + - Terminating + type: string + restore: + default: {} + description: Status of restore process of the Hazelcast cluster + properties: + remainingDataLoadTime: + description: RemainingDataLoadTime show the time in seconds remained + for the restore data load step. + format: int64 + type: integer + remainingValidationTime: + description: RemainingValidationTime show the time in seconds + remained for the restore validation step. + format: int64 + type: integer + state: + description: State shows the current phase of the restore process + of the cluster. + enum: + - Unknown + - Failed + - InProgress + - Succeeded + type: string + type: object + selector: + description: Selector is a label selector used by HorizontalPodAutoscaler + to autoscale Hazelcast resource. + type: string + type: object + type: object + served: true + storage: true + subresources: + scale: + labelSelectorPath: .status.selector + specReplicasPath: .spec.clusterSize + statusReplicasPath: .status.clusterSize + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hotbackups.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hotbackups.yaml new file mode 100644 index 00000000000..2b6716fe1f7 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_hotbackups.yaml @@ -0,0 +1,113 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: hotbackups.hazelcast.com +spec: + group: hazelcast.com + names: + kind: HotBackup + listKind: HotBackupList + plural: hotbackups + shortNames: + - hb + singular: hotbackup + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the HotBackup process + jsonPath: .status.state + name: Status + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current HotBackup Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: HotBackup is the Schema for the hot backup 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: HotBackupSpec defines the Spec of HotBackup + properties: + bucketURI: + description: |- + URL of the bucket to download HotBackup folders. + AWS S3, GCP Bucket and Azure Blob storage buckets are supported. + Example bucket URIs: + - AWS S3 -> s3://bucket-name/path/to/folder + - GCP Bucket -> gs://bucket-name/path/to/folder + - Azure Blob -> azblob://bucket-name/path/to/folder + type: string + hazelcastResourceName: + description: HazelcastResourceName defines the name of the Hazelcast + resource + type: string + secret: + description: secret is a deprecated alias for secretName. + type: string + secretName: + description: Name of the secret with credentials for cloud providers. + type: string + required: + - hazelcastResourceName + type: object + status: + description: HotBackupStatus defines the observed state of HotBackup + properties: + backupUUIDs: + items: + type: string + type: array + message: + type: string + state: + enum: + - Unknown + - Pending + - NotStarted + - InProgress + - Failure + - Success + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_jetjobs.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_jetjobs.yaml new file mode 100644 index 00000000000..2e1caa2d2ad --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_jetjobs.yaml @@ -0,0 +1,178 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: jetjobs.hazelcast.com +spec: + group: hazelcast.com + names: + kind: JetJob + listKind: JetJobList + plural: jetjobs + shortNames: + - jj + singular: jetjob + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the JetJob + jsonPath: .status.phase + name: Status + type: string + - description: ID of the JetJob + jsonPath: .status.id + name: Id + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Time when the JetJob was submitted + jsonPath: .status.submissionTime + name: SubmissionTime + type: string + - description: Time when the JetJob was completed + jsonPath: .status.completionTime + name: CompletionTime + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: JetJob is the Schema for the jetjobs 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: JetJobSpec defines the desired state of JetJob + properties: + bucketConfig: + description: Bucket config from where the JAR files will be downloaded. + properties: + bucketURI: + description: |- + URL of the bucket to download HotBackup folders. + AWS S3, GCP Bucket and Azure Blob storage buckets are supported. + Example bucket URIs: + - AWS S3 -> s3://bucket-name/path/to/folder + - GCP Bucket -> gs://bucket-name/path/to/folder + - Azure Blob -> azblob://bucket-name/path/to/folder + minLength: 6 + type: string + secret: + description: secret is a deprecated alias for secretName. + type: string + secretName: + description: Name of the secret with credentials for cloud providers. + type: string + required: + - bucketURI + type: object + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource that this resource is + created for. + minLength: 1 + type: string + initialSnapshotResourceName: + description: |- + InitialSnapshotResourceName specify the name of the JetJobSnapshot object from which + the JetJob is initialized. + type: string + jarName: + description: JarName specify the name of the Jar to run that is present + on the member. + minLength: 1 + type: string + mainClass: + description: MainClass is the name of the main class that will be + run on the submitted job. + type: string + name: + description: |- + Name of the JetJob to be created. If empty, CR name will be used. + It cannot be updated after the config is created successfully. + type: string + parameters: + description: Parameters to be passed to Jet Job. + items: + type: string + type: array + remoteURL: + description: URL from where the file will be downloaded. + type: string + state: + default: Running + description: State is used to manage the job state. + enum: + - Running + - Suspended + - Canceled + - Restarted + type: string + required: + - hazelcastResourceName + - jarName + - state + type: object + status: + description: JetJobStatus defines the observed state of JetJob + properties: + completionTime: + format: date-time + type: string + failureText: + type: string + id: + format: int64 + type: integer + phase: + enum: + - Failed + - NotRunning + - Starting + - Running + - Suspended + - SuspendedExportingSnapshot + - Completing + - ExecutionFailed + - Completed + type: string + submissionTime: + format: date-time + type: string + suspensionCause: + type: string + required: + - id + - phase + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_jetjobsnapshots.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_jetjobsnapshots.yaml new file mode 100644 index 00000000000..96ec0a982d5 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_jetjobsnapshots.yaml @@ -0,0 +1,105 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: jetjobsnapshots.hazelcast.com +spec: + group: hazelcast.com + names: + kind: JetJobSnapshot + listKind: JetJobSnapshotList + plural: jetjobsnapshots + shortNames: + - jjs + singular: jetjobsnapshot + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the JetJobSnapshot + jsonPath: .status.state + name: State + type: string + - description: Time when the JetJobSnapshot was created, if created + jsonPath: .status.creationTime + name: CreationTime + type: string + - description: Message for the JetJobSnapshot + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: JetJobSnapshot is the Schema for the jetjobsnapshots 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: JetJobSnapshotSpec defines the desired state of JetJobSnapshot + properties: + cancelJob: + default: false + description: CancelJob determines whether the job is canceled after + exporting snapshot + type: boolean + jetJobResourceName: + description: JetJobResourceName is the name of the JetJob CR where + the Snapshot is exported from + minLength: 1 + type: string + name: + description: Name of the exported snapshot + type: string + required: + - jetJobResourceName + type: object + status: + default: + state: Waiting + description: JetJobSnapshotStatus defines the observed state of JetJobSnapshot + properties: + creationTime: + format: date-time + type: string + message: + type: string + state: + enum: + - Waiting + - Exporting + - Exported + - Failed + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_managementcenters.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_managementcenters.yaml new file mode 100644 index 00000000000..99d278739dc --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_managementcenters.yaml @@ -0,0 +1,1560 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: managementcenters.hazelcast.com +spec: + group: hazelcast.com + names: + kind: ManagementCenter + listKind: ManagementCenterList + plural: managementcenters + shortNames: + - mc + singular: managementcenter + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Management Center deployment + jsonPath: .status.phase + name: Status + type: string + - description: External addresses of the Management Center deployment + jsonPath: .status.externalAddresses + name: External-Addresses + type: string + - description: Message for the current ManagementCenter Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ManagementCenter is the Schema for the managementcenters 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: ManagementCenterSpec defines the desired state of ManagementCenter. + properties: + annotations: + additionalProperties: + type: string + description: ManagementCenter Kubernetes resource annotations + type: object + externalConnectivity: + default: + type: LoadBalancer + description: Configuration to expose Management Center to outside. + properties: + ingress: + description: Ingress configuration of Management Center + properties: + annotations: + additionalProperties: + type: string + description: Annotations added to the ingress object. + type: object + hostname: + description: |- + Hostname of Management Center exposed by Ingress. + Ingress controller will use this hostname to route inbound traffic. + type: string + ingressClassName: + description: IngressClassName of the ingress object. + type: string + path: + default: / + description: Path of the ingress rule. + type: string + required: + - hostname + type: object + route: + description: OpenShift Route configuration of Management Center + properties: + hostname: + description: |- + Hostname of Management Center exposed by route. + Openshift routers will use this hostname to route inbound traffic. + type: string + required: + - hostname + type: object + type: + default: LoadBalancer + description: |- + How Management Center is exposed. + Valid values are: + - "ClusterIP" + - "NodePort" + - "LoadBalancer" (default) + enum: + - ClusterIP + - NodePort + - LoadBalancer + type: string + type: object + hazelcastClusters: + description: Connection configuration for the Hazelcast clusters that + Management Center will monitor. + items: + properties: + address: + description: |- + IP address or DNS name of the Hazelcast cluster. + If the cluster is exposed with a service name in a different namespace, use the following syntax ".". + type: string + name: + default: dev + description: Name of the Hazelcast cluster that Management Center + will connect to, default is dev. + type: string + tls: + description: TLS client configuration. + properties: + mutualAuthentication: + default: None + description: |- + Mutual authentication configuration. It’s None by default which + means the client side of connection is not authenticated. + enum: + - None + - Required + - Optional + type: string + secretName: + description: Name of the secret with TLS certificate and + key. + type: string + required: + - secretName + type: object + required: + - address + type: object + type: array + imagePullPolicy: + default: IfNotPresent + description: Pull policy for the Management Center image + type: string + imagePullSecrets: + description: Image pull secrets for the Management Center image + 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 + jvm: + description: ManagementCenter JVM configuration + properties: + args: + description: Args is for arbitrary JVM arguments + items: + type: string + type: array + type: object + labels: + additionalProperties: + type: string + description: ManagementCenter Kubernetes resource labels + type: object + licenseKeySecretName: + description: Name of the secret with Hazelcast Enterprise License + Key. + minLength: 1 + type: string + persistence: + default: + enabled: true + size: 10Gi + description: Configuration for Management Center persistence. + properties: + enabled: + default: true + description: When true, MC will use a PersistentVolumeClaim to + store data. + type: boolean + existingVolumeClaimName: + description: |- + Name of the PersistentVolumeClaim MC will use for persistence. If not empty, + MC will use the existing claim instead of creating a new one. + type: string + size: + anyOf: + - type: integer + - type: string + default: 10Gi + description: Size of the created PersistentVolumeClaim. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + storageClass: + description: StorageClass from which PersistentVolumeClaim will + be created. + type: string + type: object + repository: + default: docker.io/hazelcast/management-center + description: Repository to pull the Management Center image from. + type: string + resources: + default: {} + description: Compute Resources required by the MC container. + properties: + claims: + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + + This field is immutable. It can only be set for containers. + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. + properties: + name: + description: |- + Name must match the name of one entry in pod.spec.resourceClaims of + the Pod where this field is used. It makes that resource available + inside a container. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + type: object + type: object + scheduling: + default: {} + description: Scheduling details + properties: + affinity: + description: Affinity + properties: + nodeAffinity: + description: Describes node affinity scheduling rules for + the pod. + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node matches the corresponding matchExpressions; the + node(s) with the highest sum are the most preferred. + items: + description: |- + An empty preferred scheduling term matches all objects with implicit weight 0 + (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). + properties: + preference: + description: A node selector term, associated with + the corresponding weight. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to an update), the system + may or may not try to eventually evict the pod from its node. + properties: + nodeSelectorTerms: + description: Required. A list of node selector terms. + The terms are ORed. + items: + description: |- + A null or empty node selector term matches no objects. The requirements of + them are ANDed. + The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. + properties: + matchExpressions: + description: A list of node selector requirements + by node's labels. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchFields: + description: A list of node selector requirements + by node's fields. + items: + description: |- + A node selector requirement is a selector that contains values, a key, and an operator + that relates the key and values. + properties: + key: + description: The label key that the selector + applies to. + type: string + operator: + description: |- + Represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + type: string + values: + description: |- + An array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. If the operator is Gt or Lt, the values + array must have a single element, which will be interpreted as an integer. + This array is replaced during a strategic merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + type: object + x-kubernetes-map-type: atomic + type: array + x-kubernetes-list-type: atomic + required: + - nodeSelectorTerms + type: object + x-kubernetes-map-type: atomic + type: object + podAffinity: + description: Describes pod affinity scheduling rules (e.g. + co-locate this pod in the same node, zone, etc. as some + other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: |- + weight associated with matching the corresponding podAffinityTerm, + in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod label update), the + system may or may not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes corresponding to each + podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: |- + Defines a set of pods (namely those matching the labelSelector + relative to the given namespace(s)) that this pod should be + co-located (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node whose value of + the label with key matches that of any node on which + a pod of the set of pods is running + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + x-kubernetes-list-type: atomic + type: object + podAntiAffinity: + description: Describes pod anti-affinity scheduling rules + (e.g. avoid putting this pod in the same node, zone, etc. + as some other pod(s)). + properties: + preferredDuringSchedulingIgnoredDuringExecution: + description: |- + The scheduler will prefer to schedule pods to nodes that satisfy + the anti-affinity expressions specified by this field, but it may choose + a node that violates one or more of the expressions. The node that is + most preferred is the one with the greatest sum of weights, i.e. + for each node that meets all of the scheduling requirements (resource + request, requiredDuringScheduling anti-affinity expressions, etc.), + compute a sum by iterating through the elements of this field and adding + "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + node(s) with the highest sum are the most preferred. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + description: Required. A pod affinity term, associated + with the corresponding weight. + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list + of label selector requirements. The requirements + are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key + that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + weight: + description: |- + weight associated with matching the corresponding podAffinityTerm, + in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + type: object + type: array + x-kubernetes-list-type: atomic + requiredDuringSchedulingIgnoredDuringExecution: + description: |- + If the anti-affinity requirements specified by this field are not met at + scheduling time, the pod will not be scheduled onto the node. + If the anti-affinity requirements specified by this field cease to be met + at some point during pod execution (e.g. due to a pod label update), the + system may or may not try to eventually evict the pod from its node. + When there are multiple elements, the lists of nodes corresponding to each + podAffinityTerm are intersected, i.e. all terms must be satisfied. + items: + description: |- + Defines a set of pods (namely those matching the labelSelector + relative to the given namespace(s)) that this pod should be + co-located (affinity) or not co-located (anti-affinity) with, + where co-located is defined as running on a node whose value of + the label with key matches that of any node on which + a pod of the set of pods is running + properties: + labelSelector: + description: |- + A label query over a set of resources, in this case pods. + If it's null, this PodAffinityTerm matches with no Pods. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both matchLabelKeys and labelSelector. + Also, matchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + mismatchLabelKeys: + description: |- + MismatchLabelKeys is a set of pod label keys to select which pods will + be taken into consideration. The keys are used to lookup values from the + incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + to select the group of existing pods which pods will be taken into consideration + for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + pod labels will be ignored. The default value is empty. + The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + items: + type: string + type: array + x-kubernetes-list-type: atomic + namespaceSelector: + description: |- + A label query over the set of namespaces that the term applies to. + The term is applied to the union of the namespaces selected by this field + and the ones listed in the namespaces field. + null selector and null or empty namespaces list means "this pod's namespace". + An empty selector ({}) matches all namespaces. + properties: + matchExpressions: + description: matchExpressions is a list of label + selector requirements. The requirements are + ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that + the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + namespaces: + description: |- + namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces listed in this field + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector means "this pod's namespace". + items: + type: string + type: array + x-kubernetes-list-type: atomic + topologyKey: + description: |- + This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + the labelSelector in the specified namespaces, where co-located is defined as running on a node + whose value of the label with key topologyKey matches that of any node on which any of the + selected pods is running. + Empty topologyKey is not allowed. + type: string + required: + - topologyKey + type: object + type: array + x-kubernetes-list-type: atomic + type: object + type: object + nodeSelector: + additionalProperties: + type: string + description: NodeSelector + type: object + tolerations: + description: Tolerations + items: + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . + properties: + effect: + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + type: string + key: + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. + type: string + operator: + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. + type: string + tolerationSeconds: + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. + format: int64 + type: integer + value: + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. + type: string + type: object + type: array + topologySpreadConstraints: + description: TopologySpreadConstraints + items: + description: TopologySpreadConstraint specifies how to spread + matching pods among the given topology. + properties: + labelSelector: + description: |- + LabelSelector is used to find matching pods. + Pods that match this label selector are counted to determine the number of pods + in their corresponding topology domain. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + matchLabelKeys: + description: |- + MatchLabelKeys is a set of pod label keys to select the pods over which + spreading will be calculated. The keys are used to lookup values from the + incoming pod labels, those key-value labels are ANDed with labelSelector + to select the group of existing pods over which spreading will be calculated + for the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + MatchLabelKeys cannot be set when LabelSelector isn't set. + Keys that don't exist in the incoming pod labels will + be ignored. A null or empty list means only match against labelSelector. + + + This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). + items: + type: string + type: array + x-kubernetes-list-type: atomic + maxSkew: + description: |- + MaxSkew describes the degree to which pods may be unevenly distributed. + When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference + between the number of matching pods in the target topology and the global minimum. + The global minimum is the minimum number of matching pods in an eligible domain + or zero if the number of eligible domains is less than MinDomains. + For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same + labelSelector spread as 2/2/1: + In this case, the global minimum is 1. + | zone1 | zone2 | zone3 | + | P P | P P | P | + - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2; + scheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2) + violate MaxSkew(1). + - if MaxSkew is 2, incoming pod can be scheduled onto any zone. + When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence + to topologies that satisfy it. + It's a required field. Default value is 1 and 0 is not allowed. + format: int32 + type: integer + minDomains: + description: |- + MinDomains indicates a minimum number of eligible domains. + When the number of eligible domains with matching topology keys is less than minDomains, + Pod Topology Spread treats "global minimum" as 0, and then the calculation of Skew is performed. + And when the number of eligible domains with matching topology keys equals or greater than minDomains, + this value has no effect on scheduling. + As a result, when the number of eligible domains is less than minDomains, + scheduler won't schedule more than maxSkew Pods to those domains. + If value is nil, the constraint behaves as if MinDomains is equal to 1. + Valid values are integers greater than 0. + When value is not nil, WhenUnsatisfiable must be DoNotSchedule. + + + For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same + labelSelector spread as 2/2/2: + | zone1 | zone2 | zone3 | + | P P | P P | P P | + The number of domains is less than 5(MinDomains), so "global minimum" is treated as 0. + In this situation, new pod with the same labelSelector cannot be scheduled, + because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, + it will violate MaxSkew. + format: int32 + type: integer + nodeAffinityPolicy: + description: |- + NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector + when calculating pod topology spread skew. Options are: + - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. + - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. + + + If this value is nil, the behavior is equivalent to the Honor policy. + This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. + type: string + nodeTaintsPolicy: + description: |- + NodeTaintsPolicy indicates how we will treat node taints when calculating + pod topology spread skew. Options are: + - Honor: nodes without taints, along with tainted nodes for which the incoming pod + has a toleration, are included. + - Ignore: node taints are ignored. All nodes are included. + + + If this value is nil, the behavior is equivalent to the Ignore policy. + This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. + type: string + topologyKey: + description: |- + TopologyKey is the key of node labels. Nodes that have a label with this key + and identical values are considered to be in the same topology. + We consider each as a "bucket", and try to put balanced number + of pods into each bucket. + We define a domain as a particular instance of a topology. + Also, we define an eligible domain as a domain whose nodes meet the requirements of + nodeAffinityPolicy and nodeTaintsPolicy. + e.g. If TopologyKey is "kubernetes.io/hostname", each Node is a domain of that topology. + And, if TopologyKey is "topology.kubernetes.io/zone", each zone is a domain of that topology. + It's a required field. + type: string + whenUnsatisfiable: + description: |- + WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy + the spread constraint. + - DoNotSchedule (default) tells the scheduler not to schedule it. + - ScheduleAnyway tells the scheduler to schedule the pod in any location, + but giving higher precedence to topologies that would help reduce the + skew. + A constraint is considered "Unsatisfiable" for an incoming pod + if and only if every possible node assignment for that pod would violate + "MaxSkew" on some topology. + For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same + labelSelector spread as 3/1/1: + | zone1 | zone2 | zone3 | + | P P P | P | P | + If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled + to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies + MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler + won't make it *more* imbalanced. + It's a required field. + type: string + required: + - maxSkew + - topologyKey + - whenUnsatisfiable + type: object + type: array + type: object + securityProvider: + description: SecurityProviders to authenticate users in Management + Center + properties: + ldap: + description: LDAP security provider + properties: + adminGroups: + description: Members of these groups and its nested groups + have admin privileges on the Management Center. + items: + type: string + minItems: 1 + type: array + credentialsSecretName: + description: |- + CredentialsSecretName is the name of the secret that contains username and password of a user that has admin privileges on the LDAP server. + The username must be the DN of the user. It is used to connect to the server when authenticating users. + type: string + groupDN: + description: DN to be used for searching groups. + type: string + groupSearchFilter: + description: |- + LDAP search filter expression to search for the groups. + For example, uniquemember={0} searches for a group that matches with the uniquemember attribute. + type: string + metricsOnlyGroups: + description: Members of these groups and its nested groups + have the privilege to see only the metrics on the Management + Center. + items: + type: string + minItems: 1 + type: array + nestedGroupSearch: + default: false + description: NestedGroupSearch enables searching for nested + LDAP groups. + type: boolean + readonlyUserGroups: + description: Members of these groups and its nested groups + have only read privilege on the Management Center. + items: + type: string + minItems: 1 + type: array + url: + description: URL of your LDAP server, including schema (ldap://) + and port. + type: string + userDN: + description: DN to be used for searching users. + type: string + userGroups: + description: Members of these groups and its nested groups + have read and write privileges on the Management Center. + items: + type: string + minItems: 1 + type: array + userSearchFilter: + description: |- + LDAP search filter expression to search for the users. + For example, uid={0} searches for a username that matches with the uid attribute. + type: string + required: + - adminGroups + - credentialsSecretName + - groupDN + - groupSearchFilter + - metricsOnlyGroups + - nestedGroupSearch + - readonlyUserGroups + - url + - userDN + - userGroups + - userSearchFilter + type: object + type: object + version: + default: 5.5.2 + description: Version of Management Center. + type: string + required: + - licenseKeySecretName + type: object + status: + description: ManagementCenterStatus defines the observed state of ManagementCenter. + properties: + configured: + description: Configured is a flag that indicates if the configuration + step has successfully passed + type: boolean + externalAddresses: + description: External addresses of the Management Center instance + type: string + message: + description: Message about the Management Center state + type: string + phase: + description: Phase of the Management Center + enum: + - Running + - Failed + - Pending + - Configuring + - Terminating + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_maps.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_maps.yaml new file mode 100644 index 00000000000..059e438c5d9 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_maps.yaml @@ -0,0 +1,455 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: maps.hazelcast.com +spec: + group: hazelcast.com + names: + kind: Map + listKind: MapList + plural: maps + singular: map + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Map Config + jsonPath: .status.state + name: Status + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current Map Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Map is the Schema for the maps 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: MapSpec defines the desired state of Hazelcast Map Config + properties: + asyncBackupCount: + default: 0 + description: Number of asynchronous backups. + format: int32 + maximum: 6 + minimum: 0 + type: integer + attributes: + description: |- + Attributes to be used with Predicates API. + You can learn more at https://docs.hazelcast.com/hazelcast/latest/query/predicate-overview#creating-custom-query-attributes + items: + properties: + extractorClassName: + description: Name of the extractor class https://docs.hazelcast.com/hazelcast/latest/query/predicate-overview#implementing-a-valueextractor + type: string + name: + description: Name of the attribute https://docs.hazelcast.com/hazelcast/latest/query/predicate-overview#creating-custom-query-attributes + type: string + required: + - extractorClassName + - name + type: object + type: array + backupCount: + default: 1 + description: Number of synchronous backups. + format: int32 + maximum: 6 + minimum: 0 + type: integer + entryListeners: + description: |- + EntryListeners contains the configuration for the map-level or entry-based events listeners + provided by the Hazelcast’s eventing framework. + You can learn more at https://docs.hazelcast.com/hazelcast/latest/events/object-events. + items: + properties: + className: + description: ClassName is the fully qualified name of the class + that implements any of the Listener interface. + minLength: 1 + type: string + includeValues: + default: true + description: |- + IncludeValues is an optional attribute that indicates whether the event will contain the map value. + Defaults to true. + type: boolean + local: + default: false + description: |- + Local is an optional attribute that indicates whether the map on the local member can be listened to. + Defaults to false. + type: boolean + required: + - className + type: object + type: array + eventJournal: + description: EventJournal specifies event journal configuration of + the Map + properties: + capacity: + default: 10000 + description: Capacity sets the capacity of the ringbuffer underlying + the event journal. + format: int32 + type: integer + timeToLiveSeconds: + default: 0 + description: TimeToLiveSeconds indicates how long the items remain + in the event journal before they are expired. + format: int32 + type: integer + type: object + eviction: + default: + evictionPolicy: NONE + maxSize: 0 + maxSizePolicy: PER_NODE + description: |- + Configuration for removing data from the map when it reaches its max size. + It can be updated. + properties: + evictionPolicy: + default: NONE + description: Eviction policy to be applied when map reaches its + max size according to the max size policy. + enum: + - NONE + - LRU + - LFU + - RANDOM + type: string + maxSize: + default: 0 + description: Max size of the map. + format: int32 + type: integer + maxSizePolicy: + default: PER_NODE + description: Policy for deciding if the maxSize is reached. + enum: + - PER_NODE + - PER_PARTITION + - USED_HEAP_SIZE + - USED_HEAP_PERCENTAGE + - FREE_HEAP_SIZE + - FREE_HEAP_PERCENTAGE + - USED_NATIVE_MEMORY_SIZE + - USED_NATIVE_MEMORY_PERCENTAGE + - FREE_NATIVE_MEMORY_SIZE + - FREE_NATIVE_MEMORY_PERCENTAGE + - ENTRY_COUNT + type: string + type: object + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource that this resource is + created for. + minLength: 1 + type: string + inMemoryFormat: + default: BINARY + description: InMemoryFormat specifies in which format data will be + stored in your map + enum: + - BINARY + - OBJECT + - NATIVE + type: string + indexes: + description: |- + Indexes to be created for the map data. + You can learn more at https://docs.hazelcast.com/hazelcast/latest/query/indexing-maps. + It cannot be updated after map config is created successfully. + items: + properties: + attributes: + description: Attributes of the index. + items: + type: string + type: array + bitMapIndexOptions: + description: Options for "BITMAP" index type. See https://docs.hazelcast.com/hazelcast/latest/query/indexing-maps#configuring-bitmap-indexes + properties: + uniqueKey: + type: string + uniqueKeyTransition: + enum: + - OBJECT + - LONG + - RAW + type: string + required: + - uniqueKey + - uniqueKeyTransition + type: object + name: + description: Name of the index config. + type: string + type: + description: Type of the index. See https://docs.hazelcast.com/hazelcast/latest/query/indexing-maps#index-types + enum: + - SORTED + - HASH + - BITMAP + type: string + required: + - type + type: object + type: array + mapStore: + description: |- + Configuration options when you want to load/store the map entries + from/to a persistent data store such as a relational database + You can learn more at https://docs.hazelcast.com/hazelcast/latest/data-structures/working-with-external-data + properties: + className: + description: Name of your class implementing MapLoader and/or + MapStore interface. + type: string + initialMode: + default: LAZY + description: Sets the initial entry loading mode. + enum: + - LAZY + - EAGER + type: string + propertiesSecretName: + description: Properties can be used for giving information to + the MapStore implementation + type: string + writeBatchSize: + default: 1 + description: Used to create batches when writing to map store. + format: int32 + minimum: 1 + type: integer + writeCoalescing: + default: true + description: |- + It is meaningful if you are using write behind in MapStore. When it is set to true, + only the latest store operation on a key during the write-delay-seconds will be + reflected to MapStore. + type: boolean + writeDelaySeconds: + description: Number of seconds to delay the storing of entries. + format: int32 + type: integer + required: + - className + type: object + maxIdleSeconds: + default: 0 + description: |- + Maximum time in seconds for each entry to stay idle in the map. + Entries that are idle for more than this time are evicted automatically. + It can be updated. + format: int32 + type: integer + merkleTree: + description: MerkleTree defines the configuration for the Merkle tree + data structure. + properties: + depth: + default: 10 + description: Depth of the merkle tree. + format: int32 + type: integer + type: object + name: + description: |- + Name of the data structure config to be created. If empty, CR name will be used. + It cannot be updated after the config is created successfully. + type: string + nearCache: + description: InMemoryFormat specifies near cache configuration for + map + properties: + cacheLocalEntries: + default: true + description: CacheLocalEntries specifies whether the local entries + are cached + type: boolean + eviction: + default: + evictionPolicy: NONE + maxSizePolicy: ENTRY_COUNT + description: NearCacheEviction specifies the eviction behavior + in Near Cache + properties: + evictionPolicy: + default: NONE + description: EvictionPolicy to be applied when near cache + reaches its max size according to the max size policy. + enum: + - NONE + - LRU + - LFU + - RANDOM + type: string + maxSizePolicy: + default: ENTRY_COUNT + description: MaxSizePolicy for deciding if the maxSize is + reached. + enum: + - PER_NODE + - PER_PARTITION + - USED_HEAP_SIZE + - USED_HEAP_PERCENTAGE + - FREE_HEAP_SIZE + - FREE_HEAP_PERCENTAGE + - USED_NATIVE_MEMORY_SIZE + - USED_NATIVE_MEMORY_PERCENTAGE + - FREE_NATIVE_MEMORY_SIZE + - FREE_NATIVE_MEMORY_PERCENTAGE + - ENTRY_COUNT + type: string + size: + default: 0 + description: Size is maximum size of the Near Cache used for + max-size-policy + format: int32 + type: integer + type: object + inMemoryFormat: + default: BINARY + description: InMemoryFormat specifies in which format data will + be stored in your near cache + enum: + - BINARY + - OBJECT + - NATIVE + type: string + invalidateOnChange: + default: true + description: InvalidateOnChange specifies whether the cached entries + are evicted when the entries are updated or removed + type: boolean + maxIdleSeconds: + default: 0 + description: MaxIdleSeconds Maximum number of seconds each entry + can stay in the Near Cache as untouched (not read) + type: integer + name: + default: default + description: Name is name of the near cache + type: string + timeToLiveSeconds: + default: 0 + description: TimeToLiveSeconds maximum number of seconds for each + entry to stay in the Near Cache + type: integer + required: + - eviction + type: object + persistenceEnabled: + default: false + description: |- + When enabled, map data will be persisted. + It cannot be updated after map config is created successfully. + type: boolean + tieredStore: + description: TieredStore enables the Hazelcast's Tiered-Store feature + for the Map + properties: + diskDeviceName: + description: diskDeviceName defines the name of the device for + a given disk tier. + type: string + memoryCapacity: + anyOf: + - type: integer + - type: string + default: 256M + description: MemoryCapacity sets Memory tier capacity, i.e., how + much main memory should this tier consume at most. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + timeToLiveSeconds: + default: 0 + description: |- + Maximum time in seconds for each entry to stay in the map. + If it is not 0, entries that are older than this time and not updated for this time are evicted automatically. + It can be updated. + format: int32 + type: integer + userCodeNamespace: + description: Name of the User Code Namespace applied to this instance + minLength: 1 + type: string + required: + - hazelcastResourceName + type: object + x-kubernetes-validations: + - message: the sum of backupCount and asyncBackupCount can't be larger + than 6 + rule: (self.backupCount + self.asyncBackupCount) <= 6 + status: + description: MapStatus defines the observed state of Map + properties: + memberStatuses: + additionalProperties: + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + type: object + message: + type: string + state: + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_multimaps.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_multimaps.yaml new file mode 100644 index 00000000000..19350b7fefb --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_multimaps.yaml @@ -0,0 +1,148 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: multimaps.hazelcast.com +spec: + group: hazelcast.com + names: + kind: MultiMap + listKind: MultiMapList + plural: multimaps + shortNames: + - mmap + singular: multimap + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the MultiMap Config + jsonPath: .status.state + name: Status + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current MultiMap Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: MultiMap is the Schema for the multimaps 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: MultiMapSpec defines the desired state of MultiMap + properties: + asyncBackupCount: + default: 0 + description: Number of asynchronous backups. + format: int32 + maximum: 6 + minimum: 0 + type: integer + backupCount: + default: 1 + description: Number of synchronous backups. + format: int32 + maximum: 6 + minimum: 0 + type: integer + binary: + default: false + description: |- + Specifies in which format data will be stored in your MultiMap. + false: OBJECT true: BINARY + type: boolean + collectionType: + default: SET + description: Type of the value collection + enum: + - SET + - LIST + type: string + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource that this resource is + created for. + minLength: 1 + type: string + name: + description: |- + Name of the data structure config to be created. If empty, CR name will be used. + It cannot be updated after the config is created successfully. + type: string + userCodeNamespace: + description: Name of the User Code Namespace applied to this instance + minLength: 1 + type: string + required: + - hazelcastResourceName + type: object + x-kubernetes-validations: + - message: the sum of backupCount and asyncBackupCount can't be larger + than 6 + rule: (self.backupCount + self.asyncBackupCount) <= 6 + status: + description: MultiMapStatus defines the observed state of MultiMap + properties: + memberStatuses: + additionalProperties: + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + description: Holds status of data structure for each Hazelcast member + type: object + message: + description: Message explaining the current state + type: string + state: + description: State of the data structure + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_queues.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_queues.yaml new file mode 100644 index 00000000000..258708995eb --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_queues.yaml @@ -0,0 +1,156 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: queues.hazelcast.com +spec: + group: hazelcast.com + names: + kind: Queue + listKind: QueueList + plural: queues + shortNames: + - q + singular: queue + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Queue Config + jsonPath: .status.state + name: Status + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current Queue Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Queue is the Schema for the queues 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: |- + QueueSpec defines the desired state of Queue + It cannot be updated after the Queue is created + properties: + asyncBackupCount: + default: 0 + description: Number of asynchronous backups. + format: int32 + maximum: 6 + minimum: 0 + type: integer + backupCount: + default: 1 + description: Number of synchronous backups. + format: int32 + maximum: 6 + minimum: 0 + type: integer + emptyQueueTTLSeconds: + default: -1 + description: |- + Time in seconds after which the Queue will be destroyed if it stays empty or unused. + If the values is not provided the Queue will never be destroyed. + format: int32 + type: integer + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource that this resource is + created for. + minLength: 1 + type: string + maxSize: + default: 0 + description: Max size of the queue. + format: int32 + minimum: 0 + type: integer + name: + description: |- + Name of the data structure config to be created. If empty, CR name will be used. + It cannot be updated after the config is created successfully. + type: string + priorityComparatorClassName: + description: |- + The name of the comparator class. + If the class name is provided, the Queue becomes Priority Queue. + You can learn more at https://docs.hazelcast.com/hazelcast/latest/data-structures/priority-queue. + type: string + userCodeNamespace: + description: Name of the User Code Namespace applied to this instance + minLength: 1 + type: string + required: + - hazelcastResourceName + type: object + x-kubernetes-validations: + - message: the sum of backupCount and asyncBackupCount can't be larger + than 6 + rule: (self.backupCount + self.asyncBackupCount) <= 6 + status: + description: QueueStatus defines the observed state of Queue + properties: + memberStatuses: + additionalProperties: + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + description: Holds status of data structure for each Hazelcast member + type: object + message: + description: Message explaining the current state + type: string + state: + description: State of the data structure + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_replicatedmaps.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_replicatedmaps.yaml new file mode 100644 index 00000000000..a8b82f2a038 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_replicatedmaps.yaml @@ -0,0 +1,128 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: replicatedmaps.hazelcast.com +spec: + group: hazelcast.com + names: + kind: ReplicatedMap + listKind: ReplicatedMapList + plural: replicatedmaps + shortNames: + - rmap + singular: replicatedmap + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the ReplicatedMap Config + jsonPath: .status.state + name: Status + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current ReplicatedMap Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: ReplicatedMap is the Schema for the replicatedmaps 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: ReplicatedMapSpec defines the desired state of ReplicatedMap + properties: + asyncFillup: + default: true + description: AsyncFillup specifies whether the ReplicatedMap is available + for reads before the initial replication is completed + type: boolean + hazelcastResourceName: + description: HazelcastResourceName defines the name of the Hazelcast + resource. + minLength: 1 + type: string + inMemoryFormat: + default: OBJECT + description: InMemoryFormat specifies in which format data will be + stored in the ReplicatedMap + enum: + - BINARY + - OBJECT + type: string + name: + description: Name of the ReplicatedMap config to be created. If empty, + CR name will be used. + type: string + userCodeNamespace: + description: Name of the User Code Namespace applied to this instance + minLength: 1 + type: string + required: + - hazelcastResourceName + type: object + status: + description: ReplicatedMapStatus defines the observed state of ReplicatedMap + properties: + memberStatuses: + additionalProperties: + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + description: Holds status of data structure for each Hazelcast member + type: object + message: + description: Message explaining the current state + type: string + state: + description: State of the data structure + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_topics.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_topics.yaml new file mode 100644 index 00000000000..19a0fd4c8a2 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_topics.yaml @@ -0,0 +1,130 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: topics.hazelcast.com +spec: + group: hazelcast.com + names: + kind: Topic + listKind: TopicList + plural: topics + singular: topic + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Topic Config + jsonPath: .status.state + name: Status + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current Topic Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: Topic is the Schema for the topics 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: TopicSpec defines the desired state of Topic + properties: + globalOrderingEnabled: + default: false + description: |- + globalOrderingEnabled allows all nodes listening to the same topic get their messages in the same order + the same order + type: boolean + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource for which + topic config will be created + minLength: 1 + type: string + multiThreadingEnabled: + default: false + description: |- + multiThreadingEnabled enables multi-threaded processing of incoming messages + a single thread will handle all topic messages + type: boolean + name: + description: Name of the topic config to be created. If empty, CR + name will be used. + type: string + userCodeNamespace: + description: Name of the User Code Namespace applied to this instance + minLength: 1 + type: string + required: + - hazelcastResourceName + type: object + x-kubernetes-validations: + - message: multi threading can not be enabled when global ordering is + used + rule: '!self.globalOrderingEnabled || !self.multiThreadingEnabled' + status: + description: TopicStatus defines the observed state of Topic + properties: + memberStatuses: + additionalProperties: + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + description: Holds status of data structure for each Hazelcast member + type: object + message: + description: Message explaining the current state + type: string + state: + description: State of the data structure + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_usercodenamespaces.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_usercodenamespaces.yaml new file mode 100644 index 00000000000..b742e58053e --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_usercodenamespaces.yaml @@ -0,0 +1,116 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: usercodenamespaces.hazelcast.com +spec: + group: hazelcast.com + names: + kind: UserCodeNamespace + listKind: UserCodeNamespaceList + plural: usercodenamespaces + shortNames: + - ucn + singular: usercodenamespace + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Status of the User Code Namespace + jsonPath: .status.state + name: Status + type: string + - description: Message for the current UserCodeNamespace + jsonPath: .status.message + name: Message + priority: 1 + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: UserCodeNamespace is the Schema for the usercodenamespaces 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: UserCodeNamespaceSpec defines the desired state of UserCodeNamespace + properties: + bucketConfig: + description: Bucket config from where the JAR files will be downloaded. + properties: + bucketURI: + description: |- + URL of the bucket to download HotBackup folders. + AWS S3, GCP Bucket and Azure Blob storage buckets are supported. + Example bucket URIs: + - AWS S3 -> s3://bucket-name/path/to/folder + - GCP Bucket -> gs://bucket-name/path/to/folder + - Azure Blob -> azblob://bucket-name/path/to/folder + minLength: 6 + type: string + secret: + description: secret is a deprecated alias for secretName. + type: string + secretName: + description: Name of the secret with credentials for cloud providers. + type: string + required: + - bucketURI + type: object + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource that this resource is + created for. + minLength: 1 + type: string + required: + - hazelcastResourceName + type: object + status: + description: UserCodeNamespaceStatus defines the observed state of UserCodeNamespace + properties: + message: + type: string + state: + enum: + - Unknown + - Pending + - NotStarted + - InProgress + - Failure + - Success + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_vectorcollections.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_vectorcollections.yaml new file mode 100644 index 00000000000..0b1cd63e099 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_vectorcollections.yaml @@ -0,0 +1,159 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: vectorcollections.hazelcast.com +spec: + group: hazelcast.com + names: + kind: VectorCollection + listKind: VectorCollectionList + plural: vectorcollections + shortNames: + - vc + singular: vectorcollection + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Vector Collection Config + jsonPath: .status.state + name: Status + type: string + - description: Name of the Hazelcast resource that this resource is created for + jsonPath: .spec.hazelcastResourceName + name: Hazelcast-Resource + priority: 1 + type: string + - description: Message for the current Vector Collection Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: VectorCollection is the Schema for the vectorcollections 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: VectorCollectionSpec defines the desired state of VectorCollection + properties: + hazelcastResourceName: + description: |- + HazelcastResourceName defines the name of the Hazelcast resource that this resource is + created for. + minLength: 1 + type: string + indexes: + description: Information about indexes configuration + items: + properties: + dimension: + description: Dimension of the vector. + format: int32 + type: integer + efConstruction: + description: EfConstruction is the size of the search queue + to use when finding nearest neighbors. + format: int32 + type: integer + maxDegree: + description: MaxDegree is used to calculate the maximum number + of neighbors per node. The calculation used is max-degree + * 2. + format: int32 + type: integer + metric: + description: Metric is used to calculate the distance between + two vectors. + enum: + - Euclidean + - Cosine + - Dot + type: string + name: + description: |- + Name is name of the vector index. Can include letters, numbers, and the symbols - and _. + Required for single-index vector collections. Optional for multi-index collection. + pattern: ^[a-zA-Z0-9_\-]*$ + type: string + useDeduplication: + description: UseDeduplication specify whether to use vector + deduplication. + type: boolean + required: + - dimension + - efConstruction + - maxDegree + - metric + - useDeduplication + type: object + minItems: 1 + type: array + name: + description: |- + Name of the data structure config to be created. If empty, CR name will be used. + It cannot be updated after the config is created successfully. + pattern: ^[a-zA-Z0-9_\-*]*$ + type: string + required: + - hazelcastResourceName + - indexes + type: object + status: + description: VectorCollectionStatus defines the observed state of VectorCollection + properties: + memberStatuses: + additionalProperties: + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + description: Holds status of data structure for each Hazelcast member + type: object + message: + description: Message explaining the current state + type: string + state: + description: State of the data structure + enum: + - Success + - Failed + - Pending + - Persisting + - Terminating + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_wanreplications.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_wanreplications.yaml new file mode 100644 index 00000000000..0e7182e175c --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_wanreplications.yaml @@ -0,0 +1,217 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: wanreplications.hazelcast.com +spec: + group: hazelcast.com + names: + kind: WanReplication + listKind: WanReplicationList + plural: wanreplications + shortNames: + - wr + singular: wanreplication + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Hazelcast WAN Replication + jsonPath: .status.status + name: Status + type: string + - description: Message for the current WanReplication Config + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: WanReplication is the Schema for the wanreplications 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: WanReplicationSpec defines the desired state of WanReplication + properties: + acknowledgement: + default: + timeout: 60000 + type: ACK_ON_OPERATION_COMPLETE + description: Acknowledgement is the configuration for the condition + when the next batch of WAN events are sent. + properties: + timeout: + default: 60000 + description: |- + Timeout represents the time in milliseconds the source cluster waits for the acknowledgement. + After timeout, the events will be resent. + format: int32 + type: integer + type: + default: ACK_ON_OPERATION_COMPLETE + description: Type represents how a batch of replication events + is considered successfully replicated. + enum: + - ACK_ON_OPERATION_COMPLETE + - ACK_ON_RECEIPT + type: string + type: object + batch: + default: + maximumDelay: 1000 + size: 500 + description: Batch is the configuration for WAN events batch. + properties: + maximumDelay: + default: 1000 + description: |- + MaximumDelay represents the maximum delay in milliseconds. + If the batch size is not reached, the events will be sent after + the maximum delay. + format: int32 + type: integer + size: + default: 500 + description: Size represents the maximum batch size. + format: int32 + type: integer + type: object + endpoints: + description: Endpoints is the target cluster comma separated endpoint + list . + minLength: 1 + type: string + queue: + default: + capacity: 10000 + fullBehavior: DISCARD_AFTER_MUTATION + description: Queue is the configuration for WAN events queue. + properties: + capacity: + default: 10000 + description: Capacity is the total capacity of WAN queue. + format: int32 + type: integer + fullBehavior: + default: DISCARD_AFTER_MUTATION + description: FullBehavior represents the behavior of the new arrival + when the queue is full. + enum: + - DISCARD_AFTER_MUTATION + - THROW_EXCEPTION + - THROW_EXCEPTION_ONLY_IF_REPLICATION_ACTIVE + type: string + type: object + resources: + description: Resources is the list of custom resources to which WAN + replication applies. + items: + properties: + kind: + default: Map + description: Kind is the kind of custom resource to which WAN + replication applies. + enum: + - Map + - Hazelcast + type: string + name: + description: Name is the name of custom resource to which WAN + replication applies. + minLength: 1 + type: string + required: + - name + type: object + minItems: 1 + type: array + syncConsistencyCheckStrategy: + description: SyncConsistencyCheckStrategy is the strategy for checking + the consistency of data between replicas. + type: string + targetClusterName: + description: ClusterName is the clusterName field of the target Hazelcast + resource. + minLength: 1 + type: string + required: + - endpoints + - resources + - targetClusterName + type: object + status: + description: WanReplicationStatus defines the observed state of WanReplication + properties: + message: + description: Message is the field to show detail information or error + type: string + status: + description: Status is the status of WAN replication + type: string + wanReplicationMapsStatus: + additionalProperties: + properties: + membersStatus: + additionalProperties: + properties: + isConnected: + description: IsConnected defines whether the member is + connected + type: boolean + state: + description: State is the WAN state of the member + type: string + type: object + description: MembersStatus is the wan status of each member + type: object + message: + description: Message is the field to show detail information + or error + type: string + publisherId: + description: PublisherId is the ID used for WAN publisher ID + type: string + resourceName: + description: ResourceName is the name of the Map Custom Resource. + type: string + status: + description: Status is the status of WAN replication + type: string + type: object + description: |- + WanReplicationMapsStatus is the WAN Replication status of the Maps given in the spec + directly or indirectly by Hazelcast resource. + type: object + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_wansyncs.yaml b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_wansyncs.yaml new file mode 100644 index 00000000000..c0481dca824 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/manifests/hazelcast.com_wansyncs.yaml @@ -0,0 +1,107 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.14.0 + creationTimestamp: null + name: wansyncs.hazelcast.com +spec: + group: hazelcast.com + names: + kind: WanSync + listKind: WanSyncList + plural: wansyncs + shortNames: + - ws + singular: wansync + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Current state of the Hazelcast WAN Sync + jsonPath: .status.status + name: Status + type: string + - description: Message for the current WanSync + jsonPath: .status.message + name: Message + priority: 1 + type: string + name: v1alpha1 + schema: + openAPIV3Schema: + description: WanSync is the Schema for the wansyncs 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: WanSyncSpec defines the desired state of WanSync + properties: + wanReplicationResourceName: + description: |- + WanReplicationResourceName is the name of WanReplication CR that contains the WAN publisher configuration. + If specified the Sync operation will use existing WAN publisher. + minLength: 1 + type: string + required: + - wanReplicationResourceName + type: object + status: + description: WanSyncStatus defines the observed state of WanSync + properties: + message: + description: Message is the field to show detail information or error + type: string + status: + description: Status is the status of WAN Sync + type: string + wanSyncMapsStatus: + additionalProperties: + properties: + message: + description: Message is the field to show detail information + or error + type: string + phase: + description: Status is the status of the resource WAN sync + type: string + publisherId: + description: PublisherId is the ID used for WAN publisher ID + type: string + resourceName: + description: ResourceName is the name of the Map Custom Resource. + type: string + type: object + description: |- + WanSyncMapStatus is the WAN Sync status of the Maps given in the spec + directly or indirectly by Hazelcast resource. + type: object + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/hazelcast-platform-operator/5.14.0/metadata/annotations.yaml b/operators/hazelcast-platform-operator/5.14.0/metadata/annotations.yaml new file mode 100644 index 00000000000..8da3573f6f0 --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/metadata/annotations.yaml @@ -0,0 +1,15 @@ +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: hazelcast-platform-operator + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.bundle.channel.default.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.34.1 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v4 + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ + com.redhat.openshift.versions: v4.8 diff --git a/operators/hazelcast-platform-operator/5.14.0/tests/scorecard/config.yaml b/operators/hazelcast-platform-operator/5.14.0/tests/scorecard/config.yaml new file mode 100644 index 00000000000..5c3102dd94f --- /dev/null +++ b/operators/hazelcast-platform-operator/5.14.0/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:v1.7.2 + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:v1.7.2 + 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:v1.7.2 + 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:v1.7.2 + 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:v1.7.2 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:v1.7.2 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {}