Repository for dip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1318 lines
66 KiB

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.