apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: kafkanodepools.kafka.strimzi.io labels: app: strimzi strimzi.io/crd-install: "true" component: kafkanodepools.kafka.strimzi.io-crd spec: group: kafka.strimzi.io names: kind: KafkaNodePool listKind: KafkaNodePoolList singular: kafkanodepool plural: kafkanodepools shortNames: - knp categories: - strimzi scope: Namespaced conversion: strategy: None versions: - name: v1beta2 served: true storage: true subresources: status: {} scale: specReplicasPath: .spec.replicas statusReplicasPath: .status.replicas labelSelectorPath: .status.labelSelector additionalPrinterColumns: - name: Desired replicas description: The desired number of replicas jsonPath: .spec.replicas type: integer - name: Roles description: Roles of the nodes in the pool jsonPath: .status.roles type: string - name: NodeIds description: Node IDs used by Kafka nodes in this pool jsonPath: .status.nodeIds type: string schema: openAPIV3Schema: type: object properties: apiVersion: type: string 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" kind: type: string 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" metadata: type: object spec: type: object properties: replicas: type: integer minimum: 0 description: The number of pods in the pool. storage: type: object properties: class: type: string description: The storage class to use for dynamic volume allocation. deleteClaim: type: boolean description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. id: type: integer minimum: 0 description: Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'. kraftMetadata: type: string enum: - shared description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." overrides: type: array items: type: object properties: class: type: string description: The storage class to use for dynamic volume allocation for this broker. broker: type: integer description: Id of the kafka broker (broker identifier). description: "As of Strimzi 0.46.0, the storage overrides for individual brokers are not supported anymore and this option is ignored." selector: additionalProperties: type: string type: object description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. size: type: string description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." sizeLimit: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." type: type: string enum: - ephemeral - persistent-claim - jbod description: "Storage type, must be either 'ephemeral', 'persistent-claim', or 'jbod'." volumes: type: array items: type: object properties: class: type: string description: The storage class to use for dynamic volume allocation. deleteClaim: type: boolean description: Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed. id: type: integer minimum: 0 description: Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration. kraftMetadata: type: string enum: - shared description: "Specifies whether this volume should be used for storing KRaft metadata. This property is optional. When set, the only currently supported value is `shared`. At most one volume can have this property set." overrides: type: array items: type: object properties: class: type: string description: The storage class to use for dynamic volume allocation for this broker. broker: type: integer description: Id of the kafka broker (broker identifier). description: "As of Strimzi 0.46.0, the storage overrides for individual brokers are not supported anymore and this option is ignored." selector: additionalProperties: type: string type: object description: Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume. size: type: string description: "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`." sizeLimit: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi)." type: type: string enum: - ephemeral - persistent-claim description: "Storage type, must be either 'ephemeral' or 'persistent-claim'." required: - type description: List of volumes as Storage objects representing the JBOD disks array. required: - type description: Storage configuration (disk). Cannot be updated. roles: type: array items: type: string enum: - controller - broker description: The roles assigned to the node pool. Supported values are `broker` and `controller`. This property is required. resources: type: object properties: claims: type: array items: type: object properties: name: type: string request: type: string 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 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 type: object description: CPU and memory resources to reserve. jvmOptions: type: object properties: "-XX": additionalProperties: type: string type: object description: A map of -XX options to the JVM. "-Xmx": type: string pattern: "^[0-9]+[mMgG]?$" description: -Xmx option to to the JVM. "-Xms": type: string pattern: "^[0-9]+[mMgG]?$" description: -Xms option to to the JVM. gcLoggingEnabled: type: boolean description: Specifies whether the Garbage Collection logging is enabled. The default is false. javaSystemProperties: type: array items: type: object properties: name: type: string description: The system property name. value: type: string description: The system property value. description: A map of additional system properties which will be passed using the `-D` option to the JVM. description: JVM Options for pods. template: type: object properties: podSet: type: object properties: metadata: type: object properties: labels: additionalProperties: type: string type: object description: Labels added to the Kubernetes resource. annotations: additionalProperties: type: string type: object description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for Kafka `StrimziPodSet` resource. pod: type: object properties: metadata: type: object properties: labels: additionalProperties: type: string type: object description: Labels added to the Kubernetes resource. annotations: additionalProperties: type: string type: object description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. imagePullSecrets: type: array items: type: object properties: name: type: string description: "List of references to secrets in the same namespace to use for pulling any of the images used by this Pod. When the `STRIMZI_IMAGE_PULL_SECRETS` environment variable in Cluster Operator and the `imagePullSecrets` option are specified, only the `imagePullSecrets` variable is used and the `STRIMZI_IMAGE_PULL_SECRETS` variable is ignored." securityContext: type: object properties: appArmorProfile: type: object properties: localhostProfile: type: string type: type: string fsGroup: type: integer fsGroupChangePolicy: type: string runAsGroup: type: integer runAsNonRoot: type: boolean runAsUser: type: integer seLinuxChangePolicy: type: string seLinuxOptions: type: object properties: level: type: string role: type: string type: type: string user: type: string seccompProfile: type: object properties: localhostProfile: type: string type: type: string supplementalGroups: type: array items: type: integer supplementalGroupsPolicy: type: string sysctls: type: array items: type: object properties: name: type: string value: type: string windowsOptions: type: object properties: gmsaCredentialSpec: type: string gmsaCredentialSpecName: type: string hostProcess: type: boolean runAsUserName: type: string description: Configures pod-level security attributes and common container settings. terminationGracePeriodSeconds: type: integer minimum: 0 description: "The grace period is the duration in seconds after the processes running in the pod are sent a termination signal, and the time when the processes are forcibly halted with a kill signal. Set this value to longer than the expected cleanup time for your process. Value must be a non-negative integer. A zero value indicates delete immediately. You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated. Defaults to 30 seconds." affinity: type: object properties: nodeAffinity: type: object properties: preferredDuringSchedulingIgnoredDuringExecution: type: array items: type: object properties: preference: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchFields: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string weight: type: integer requiredDuringSchedulingIgnoredDuringExecution: type: object properties: nodeSelectorTerms: type: array items: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchFields: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string podAffinity: type: object properties: preferredDuringSchedulingIgnoredDuringExecution: type: array items: type: object properties: podAffinityTerm: type: object properties: labelSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object matchLabelKeys: type: array items: type: string mismatchLabelKeys: type: array items: type: string namespaceSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object namespaces: type: array items: type: string topologyKey: type: string weight: type: integer requiredDuringSchedulingIgnoredDuringExecution: type: array items: type: object properties: labelSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object matchLabelKeys: type: array items: type: string mismatchLabelKeys: type: array items: type: string namespaceSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object namespaces: type: array items: type: string topologyKey: type: string podAntiAffinity: type: object properties: preferredDuringSchedulingIgnoredDuringExecution: type: array items: type: object properties: podAffinityTerm: type: object properties: labelSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object matchLabelKeys: type: array items: type: string mismatchLabelKeys: type: array items: type: string namespaceSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object namespaces: type: array items: type: string topologyKey: type: string weight: type: integer requiredDuringSchedulingIgnoredDuringExecution: type: array items: type: object properties: labelSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object matchLabelKeys: type: array items: type: string mismatchLabelKeys: type: array items: type: string namespaceSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object namespaces: type: array items: type: string topologyKey: type: string description: The pod's affinity rules. tolerations: type: array items: type: object properties: effect: type: string key: type: string operator: type: string tolerationSeconds: type: integer value: type: string description: The pod's tolerations. topologySpreadConstraints: type: array items: type: object properties: labelSelector: type: object properties: matchExpressions: type: array items: type: object properties: key: type: string operator: type: string values: type: array items: type: string matchLabels: additionalProperties: type: string type: object matchLabelKeys: type: array items: type: string maxSkew: type: integer minDomains: type: integer nodeAffinityPolicy: type: string nodeTaintsPolicy: type: string topologyKey: type: string whenUnsatisfiable: type: string description: The pod's topology spread constraints. priorityClassName: type: string description: 'The name of the priority class used to assign priority to the pods. ' schedulerName: type: string description: "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used." hostAliases: type: array items: type: object properties: hostnames: type: array items: type: string ip: type: string description: The pod's HostAliases. HostAliases is an optional list of hosts and IPs that will be injected into the Pod's hosts file if specified. dnsPolicy: type: string enum: - ClusterFirst - ClusterFirstWithHostNet - Default - None description: "The pod's DNSPolicy. Defaults to `ClusterFirst`. Valid values are `ClusterFirstWithHostNet`, `ClusterFirst`, `Default` or `None`." dnsConfig: type: object properties: nameservers: type: array items: type: string options: type: array items: type: object properties: name: type: string value: type: string searches: type: array items: type: string description: "The pod's DNSConfig. If specified, it will be merged to the generated DNS configuration based on the DNSPolicy." enableServiceLinks: type: boolean description: Indicates whether information about services should be injected into Pod's environment variables. tmpDirSizeLimit: type: string pattern: "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" description: "Defines the total amount of pod memory allocated for the temporary `EmptyDir` volume `/tmp`. Specify the allocation in memory units, for example, `100Mi` for 100 mebibytes. Default value is `5Mi`. The `/tmp` volume is backed by pod memory, not disk storage, so avoid setting a high value as it consumes pod memory resources." volumes: type: array items: type: object properties: name: type: string description: Name to use for the volume. Required. secret: type: object properties: defaultMode: type: integer items: type: array items: type: object properties: key: type: string mode: type: integer path: type: string optional: type: boolean secretName: type: string description: '`Secret` to use to populate the volume.' configMap: type: object properties: defaultMode: type: integer items: type: array items: type: object properties: key: type: string mode: type: integer path: type: string name: type: string optional: type: boolean description: '`ConfigMap` to use to populate the volume.' emptyDir: type: object properties: medium: type: string sizeLimit: type: object properties: amount: type: string format: type: string description: '`EmptyDir` to use to populate the volume.' persistentVolumeClaim: type: object properties: claimName: type: string readOnly: type: boolean description: '`PersistentVolumeClaim` object to use to populate the volume.' csi: type: object properties: driver: type: string fsType: type: string nodePublishSecretRef: type: object properties: name: type: string readOnly: type: boolean volumeAttributes: additionalProperties: type: string type: object description: '`CSIVolumeSource` object to use to populate the volume.' image: type: object properties: pullPolicy: type: string reference: type: string description: '`ImageVolumeSource` object to use to populate the volume.' oneOf: - properties: secret: {} configMap: {} emptyDir: {} persistentVolumeClaim: {} csi: {} image: {} description: Additional volumes that can be mounted to the pod. description: Template for Kafka `Pods`. perPodService: type: object properties: metadata: type: object properties: labels: additionalProperties: type: string type: object description: Labels added to the Kubernetes resource. annotations: additionalProperties: type: string type: object description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for Kafka per-pod `Services` used for access from outside of Kubernetes. perPodRoute: type: object properties: metadata: type: object properties: labels: additionalProperties: type: string type: object description: Labels added to the Kubernetes resource. annotations: additionalProperties: type: string type: object description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for Kafka per-pod `Routes` used for access from outside of OpenShift. perPodIngress: type: object properties: metadata: type: object properties: labels: additionalProperties: type: string type: object description: Labels added to the Kubernetes resource. annotations: additionalProperties: type: string type: object description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for Kafka per-pod `Ingress` used for access from outside of Kubernetes. persistentVolumeClaim: type: object properties: metadata: type: object properties: labels: additionalProperties: type: string type: object description: Labels added to the Kubernetes resource. annotations: additionalProperties: type: string type: object description: Annotations added to the Kubernetes resource. description: Metadata applied to the resource. description: Template for all Kafka `PersistentVolumeClaims`. kafkaContainer: type: object properties: env: type: array items: type: object properties: name: type: string description: The environment variable key. value: type: string description: The environment variable value. valueFrom: type: object properties: secretKeyRef: type: object properties: key: type: string name: type: string optional: type: boolean description: Reference to a key in a secret. configMapKeyRef: type: object properties: key: type: string name: type: string optional: type: boolean description: Reference to a key in a config map. oneOf: - properties: secretKeyRef: {} required: - secretKeyRef - properties: configMapKeyRef: {} required: - configMapKeyRef description: Reference to the secret or config map property to which the environment variable is set. oneOf: - properties: value: {} required: - value - properties: valueFrom: {} required: - valueFrom description: Environment variables which should be applied to the container. securityContext: type: object properties: allowPrivilegeEscalation: type: boolean appArmorProfile: type: object properties: localhostProfile: type: string type: type: string capabilities: type: object properties: add: type: array items: type: string drop: type: array items: type: string privileged: type: boolean procMount: type: string readOnlyRootFilesystem: type: boolean runAsGroup: type: integer runAsNonRoot: type: boolean runAsUser: type: integer seLinuxOptions: type: object properties: level: type: string role: type: string type: type: string user: type: string seccompProfile: type: object properties: localhostProfile: type: string type: type: string windowsOptions: type: object properties: gmsaCredentialSpec: type: string gmsaCredentialSpecName: type: string hostProcess: type: boolean runAsUserName: type: string description: Security context for the container. volumeMounts: type: array items: type: object properties: mountPath: type: string mountPropagation: type: string name: type: string readOnly: type: boolean recursiveReadOnly: type: string subPath: type: string subPathExpr: type: string description: Additional volume mounts which should be applied to the container. description: Template for the Kafka broker container. initContainer: type: object properties: env: type: array items: type: object properties: name: type: string description: The environment variable key. value: type: string description: The environment variable value. valueFrom: type: object properties: secretKeyRef: type: object properties: key: type: string name: type: string optional: type: boolean description: Reference to a key in a secret. configMapKeyRef: type: object properties: key: type: string name: type: string optional: type: boolean description: Reference to a key in a config map. oneOf: - properties: secretKeyRef: {} required: - secretKeyRef - properties: configMapKeyRef: {} required: - configMapKeyRef description: Reference to the secret or config map property to which the environment variable is set. oneOf: - properties: value: {} required: - value - properties: valueFrom: {} required: - valueFrom description: Environment variables which should be applied to the container. securityContext: type: object properties: allowPrivilegeEscalation: type: boolean appArmorProfile: type: object properties: localhostProfile: type: string type: type: string capabilities: type: object properties: add: type: array items: type: string drop: type: array items: type: string privileged: type: boolean procMount: type: string readOnlyRootFilesystem: type: boolean runAsGroup: type: integer runAsNonRoot: type: boolean runAsUser: type: integer seLinuxOptions: type: object properties: level: type: string role: type: string type: type: string user: type: string seccompProfile: type: object properties: localhostProfile: type: string type: type: string windowsOptions: type: object properties: gmsaCredentialSpec: type: string gmsaCredentialSpecName: type: string hostProcess: type: boolean runAsUserName: type: string description: Security context for the container. volumeMounts: type: array items: type: object properties: mountPath: type: string mountPropagation: type: string name: type: string readOnly: type: boolean recursiveReadOnly: type: string subPath: type: string subPathExpr: type: string description: Additional volume mounts which should be applied to the container. description: Template for the Kafka init container. description: Template for pool resources. The template allows users to specify how the resources belonging to this pool are generated. required: - replicas - storage - roles description: The specification of the KafkaNodePool. status: type: object properties: conditions: type: array items: type: object properties: type: type: string description: "The unique identifier of a condition, used to distinguish between other conditions in the resource." status: type: string description: "The status of the condition, either True, False or Unknown." lastTransitionTime: type: string description: "Last time the condition of a type changed from one status to another. The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone." reason: type: string description: The reason for the condition's last transition (a single word in CamelCase). message: type: string description: Human-readable message indicating details about the condition's last transition. description: List of status conditions. observedGeneration: type: integer description: The generation of the CRD that was last reconciled by the operator. nodeIds: type: array items: type: integer description: Node IDs used by Kafka nodes in this pool. clusterId: type: string description: Kafka cluster ID. roles: type: array items: type: string enum: - controller - broker description: The roles currently assigned to this pool. replicas: type: integer description: The current number of pods being used to provide this resource. labelSelector: type: string description: Label selector for pods providing this resource. description: The status of the KafkaNodePool.