apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: hazelcasts.hazelcast.com spec: group: hazelcast.com names: kind: Hazelcast listKind: HazelcastList plural: hazelcasts 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 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: clusterName: default: dev description: Name of the Hazelcast cluster. type: string clusterSize: default: 3 description: Number of Hazelcast members in the cluster. format: int32 minimum: 0 type: integer exposeExternally: description: Configuration to expose Hazelcast cluster to external clients. properties: discoveryServiceType: description: Type of the service used to discover Hazelcast cluster. type: string memberAccess: description: 'How each member is accessed from the external client. 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: 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 licenseKeySecret: description: Name of the secret with Hazelcast Enterprise License Key. type: string repository: default: docker.io/hazelcast/hazelcast description: Repository to pull the Hazelcast Platform image from. type: string version: default: "5.0.2" description: Version of Hazelcast Platform. type: string type: object status: description: HazelcastStatus defines the observed state of Hazelcast properties: hazelcastClusterStatus: description: HazelcastClusterStatus defines the 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 required: - readyMembers type: object message: type: string phase: description: Phase represents the current state of the cluster type: string required: - hazelcastClusterStatus - phase type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.4.1 creationTimestamp: null name: managementcenters.hazelcast.com spec: group: hazelcast.com names: kind: ManagementCenter listKind: ManagementCenterList plural: managementcenters singular: managementcenter scope: Namespaced versions: - additionalPrinterColumns: - description: Current state of the Management Center deployment jsonPath: .status.phase name: Status 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: externalConnectivity: description: Configuration to expose Management Center to outside. properties: 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 required: - address type: object type: array licenseKeySecret: description: Name of the secret with Hazelcast Enterprise License Key. type: string persistence: description: Configuration for Management Center persistence. properties: enabled: default: true type: boolean size: anyOf: - type: integer - type: string default: 10Gi pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true storageClass: nullable: true type: string type: object repository: default: docker.io/hazelcast/management-center description: Repository to pull the Management Center image from. type: string version: default: "5.0.4" description: Version of Management Center. type: string type: object status: description: ManagementCenterStatus defines the observed state of ManagementCenter. properties: message: type: string phase: description: Phase represents the current state of the cluster type: string required: - phase type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: v1 kind: ServiceAccount metadata: name: hazelcast-platform-controller-manager namespace: default --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: creationTimestamp: null name: hazelcast-platform-manager-role namespace: default rules: - apiGroups: - "" resources: - events - pods - serviceaccounts - services verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apps resources: - statefulsets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - hazelcast.com resources: - hazelcasts verbs: - create - delete - get - list - patch - update - watch - apiGroups: - hazelcast.com resources: - hazelcasts/finalizers verbs: - update - apiGroups: - hazelcast.com resources: - hazelcasts/status verbs: - get - patch - update - apiGroups: - hazelcast.com resources: - managementcenters verbs: - create - delete - get - list - patch - update - watch - apiGroups: - hazelcast.com resources: - managementcenters/finalizers verbs: - update - apiGroups: - hazelcast.com resources: - managementcenters/status verbs: - get - patch - update - apiGroups: - rbac.authorization.k8s.io resources: - rolebindings - roles verbs: - create - delete - get - list - patch - update - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null name: hazelcast-platform-manager-role rules: - apiGroups: - "" resources: - endpoints - nodes - pods - services verbs: - get - list - apiGroups: - rbac.authorization.k8s.io resources: - clusterrolebindings - clusterroles verbs: - create - delete - get - list - patch - update - watch - apiGroups: - security.openshift.io resources: - securitycontextconstraints verbs: - use --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: hazelcast-platform-manager-rolebinding namespace: default roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: hazelcast-platform-manager-role subjects: - kind: ServiceAccount name: hazelcast-platform-controller-manager namespace: default --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: hazelcast-platform-manager-clusterrolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: hazelcast-platform-manager-role subjects: - kind: ServiceAccount name: hazelcast-platform-controller-manager namespace: default --- apiVersion: apps/v1 kind: Deployment metadata: labels: control-plane: controller-manager name: hazelcast-platform-controller-manager namespace: default spec: replicas: 1 selector: matchLabels: control-plane: controller-manager template: metadata: labels: control-plane: controller-manager spec: containers: - args: - --leader-elect=false command: - /manager env: - name: WATCH_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace image: hazelcast/hazelcast-platform-operator:5.0 imagePullPolicy: Always livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 15 periodSeconds: 20 name: manager readinessProbe: httpGet: path: /readyz port: 8081 initialDelaySeconds: 5 periodSeconds: 10 resources: limits: cpu: 200m memory: 300Mi requests: cpu: 100m memory: 100Mi securityContext: allowPrivilegeEscalation: false securityContext: runAsNonRoot: true serviceAccountName: hazelcast-platform-controller-manager terminationGracePeriodSeconds: 10