{
  "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": "The specification of the KafkaNodePool.",
      "properties": {
        "jvmOptions": {
          "description": "JVM Options for pods.",
          "properties": {
            "-XX": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "A map of -XX options to the JVM.",
              "type": "object"
            },
            "-Xms": {
              "description": "-Xms option to to the JVM.",
              "pattern": "^[0-9]+[mMgG]?$",
              "type": "string"
            },
            "-Xmx": {
              "description": "-Xmx option to to the JVM.",
              "pattern": "^[0-9]+[mMgG]?$",
              "type": "string"
            },
            "gcLoggingEnabled": {
              "description": "Specifies whether the Garbage Collection logging is enabled. The default is false.",
              "type": "boolean"
            },
            "javaSystemProperties": {
              "description": "A map of additional system properties which will be passed using the `-D` option to the JVM.",
              "items": {
                "properties": {
                  "name": {
                    "description": "The system property name.",
                    "type": "string"
                  },
                  "value": {
                    "description": "The system property value.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "replicas": {
          "description": "The number of pods in the pool.",
          "minimum": 0,
          "type": "integer"
        },
        "resources": {
          "description": "CPU and memory resources to reserve.",
          "properties": {
            "claims": {
              "items": {
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "request": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "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"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "roles": {
          "description": "The roles assigned to the node pool. Supported values are `broker` and `controller`. This property is required.",
          "items": {
            "enum": [
              "controller",
              "broker"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "storage": {
          "description": "Storage configuration (disk). Cannot be updated.",
          "properties": {
            "class": {
              "description": "The storage class to use for dynamic volume allocation.",
              "type": "string"
            },
            "deleteClaim": {
              "description": "Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed.",
              "type": "boolean"
            },
            "id": {
              "description": "Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'.",
              "minimum": 0,
              "type": "integer"
            },
            "kraftMetadata": {
              "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.",
              "enum": [
                "shared"
              ],
              "type": "string"
            },
            "overrides": {
              "description": "As of Strimzi 0.46.0, the storage overrides for individual brokers are not supported anymore and this option is ignored.",
              "items": {
                "properties": {
                  "broker": {
                    "description": "Id of the kafka broker (broker identifier).",
                    "type": "integer"
                  },
                  "class": {
                    "description": "The storage class to use for dynamic volume allocation for this broker.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "selector": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume.",
              "type": "object"
            },
            "size": {
              "description": "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`.",
              "type": "string"
            },
            "sizeLimit": {
              "description": "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi).",
              "pattern": "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$",
              "type": "string"
            },
            "type": {
              "description": "Storage type, must be either 'ephemeral', 'persistent-claim', or 'jbod'.",
              "enum": [
                "ephemeral",
                "persistent-claim",
                "jbod"
              ],
              "type": "string"
            },
            "volumeAttributesClass": {
              "description": "Specifies `VolumeAttributeClass` name for dynamically configuring storage attributes.",
              "type": "string"
            },
            "volumes": {
              "description": "List of volumes as Storage objects representing the JBOD disks array.",
              "items": {
                "properties": {
                  "class": {
                    "description": "The storage class to use for dynamic volume allocation.",
                    "type": "string"
                  },
                  "deleteClaim": {
                    "description": "Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed.",
                    "type": "boolean"
                  },
                  "id": {
                    "description": "Storage identification number. Mandatory for storage volumes defined with a `jbod` storage type configuration.",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "kraftMetadata": {
                    "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.",
                    "enum": [
                      "shared"
                    ],
                    "type": "string"
                  },
                  "overrides": {
                    "description": "As of Strimzi 0.46.0, the storage overrides for individual brokers are not supported anymore and this option is ignored.",
                    "items": {
                      "properties": {
                        "broker": {
                          "description": "Id of the kafka broker (broker identifier).",
                          "type": "integer"
                        },
                        "class": {
                          "description": "The storage class to use for dynamic volume allocation for this broker.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "selector": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume.",
                    "type": "object"
                  },
                  "size": {
                    "description": "When `type=persistent-claim`, defines the size of the persistent volume claim, such as 100Gi. Mandatory when `type=persistent-claim`.",
                    "type": "string"
                  },
                  "sizeLimit": {
                    "description": "When type=ephemeral, defines the total amount of local storage required for this EmptyDir volume (for example 1Gi).",
                    "pattern": "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$",
                    "type": "string"
                  },
                  "type": {
                    "description": "Storage type, must be either 'ephemeral' or 'persistent-claim'.",
                    "enum": [
                      "ephemeral",
                      "persistent-claim"
                    ],
                    "type": "string"
                  },
                  "volumeAttributesClass": {
                    "description": "Specifies `VolumeAttributeClass` name for dynamically configuring storage attributes.",
                    "type": "string"
                  }
                },
                "required": [
                  "type"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "required": [
            "type"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "template": {
          "description": "Template for pool resources. The template allows users to specify how the resources belonging to this pool are generated.",
          "properties": {
            "initContainer": {
              "description": "Template for the Kafka init container.",
              "properties": {
                "env": {
                  "description": "Environment variables which should be applied to the container.",
                  "items": {
                    "oneOf": [
                      {
                        "properties": {
                          "value": {}
                        },
                        "required": [
                          "value"
                        ]
                      },
                      {
                        "properties": {
                          "valueFrom": {}
                        },
                        "required": [
                          "valueFrom"
                        ]
                      }
                    ],
                    "properties": {
                      "name": {
                        "description": "The environment variable key.",
                        "type": "string"
                      },
                      "value": {
                        "description": "The environment variable value.",
                        "type": "string"
                      },
                      "valueFrom": {
                        "description": "Reference to the secret or config map property to which the environment variable is set.",
                        "oneOf": [
                          {
                            "properties": {
                              "secretKeyRef": {}
                            },
                            "required": [
                              "secretKeyRef"
                            ]
                          },
                          {
                            "properties": {
                              "configMapKeyRef": {}
                            },
                            "required": [
                              "configMapKeyRef"
                            ]
                          }
                        ],
                        "properties": {
                          "configMapKeyRef": {
                            "description": "Reference to a key in a config map.",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "optional": {
                                "type": "boolean"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "secretKeyRef": {
                            "description": "Reference to a key in a secret.",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "optional": {
                                "type": "boolean"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "securityContext": {
                  "description": "Security context for the container.",
                  "properties": {
                    "allowPrivilegeEscalation": {
                      "type": "boolean"
                    },
                    "appArmorProfile": {
                      "properties": {
                        "localhostProfile": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "capabilities": {
                      "properties": {
                        "add": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "drop": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "privileged": {
                      "type": "boolean"
                    },
                    "procMount": {
                      "type": "string"
                    },
                    "readOnlyRootFilesystem": {
                      "type": "boolean"
                    },
                    "runAsGroup": {
                      "type": "integer"
                    },
                    "runAsNonRoot": {
                      "type": "boolean"
                    },
                    "runAsUser": {
                      "type": "integer"
                    },
                    "seLinuxOptions": {
                      "properties": {
                        "level": {
                          "type": "string"
                        },
                        "role": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "user": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "seccompProfile": {
                      "properties": {
                        "localhostProfile": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "windowsOptions": {
                      "properties": {
                        "gmsaCredentialSpec": {
                          "type": "string"
                        },
                        "gmsaCredentialSpecName": {
                          "type": "string"
                        },
                        "hostProcess": {
                          "type": "boolean"
                        },
                        "runAsUserName": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "volumeMounts": {
                  "description": "Additional volume mounts which should be applied to the container.",
                  "items": {
                    "properties": {
                      "mountPath": {
                        "type": "string"
                      },
                      "mountPropagation": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "readOnly": {
                        "type": "boolean"
                      },
                      "recursiveReadOnly": {
                        "type": "string"
                      },
                      "subPath": {
                        "type": "string"
                      },
                      "subPathExpr": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "kafkaContainer": {
              "description": "Template for the Kafka broker container.",
              "properties": {
                "env": {
                  "description": "Environment variables which should be applied to the container.",
                  "items": {
                    "oneOf": [
                      {
                        "properties": {
                          "value": {}
                        },
                        "required": [
                          "value"
                        ]
                      },
                      {
                        "properties": {
                          "valueFrom": {}
                        },
                        "required": [
                          "valueFrom"
                        ]
                      }
                    ],
                    "properties": {
                      "name": {
                        "description": "The environment variable key.",
                        "type": "string"
                      },
                      "value": {
                        "description": "The environment variable value.",
                        "type": "string"
                      },
                      "valueFrom": {
                        "description": "Reference to the secret or config map property to which the environment variable is set.",
                        "oneOf": [
                          {
                            "properties": {
                              "secretKeyRef": {}
                            },
                            "required": [
                              "secretKeyRef"
                            ]
                          },
                          {
                            "properties": {
                              "configMapKeyRef": {}
                            },
                            "required": [
                              "configMapKeyRef"
                            ]
                          }
                        ],
                        "properties": {
                          "configMapKeyRef": {
                            "description": "Reference to a key in a config map.",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "optional": {
                                "type": "boolean"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "secretKeyRef": {
                            "description": "Reference to a key in a secret.",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "optional": {
                                "type": "boolean"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "securityContext": {
                  "description": "Security context for the container.",
                  "properties": {
                    "allowPrivilegeEscalation": {
                      "type": "boolean"
                    },
                    "appArmorProfile": {
                      "properties": {
                        "localhostProfile": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "capabilities": {
                      "properties": {
                        "add": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "drop": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "privileged": {
                      "type": "boolean"
                    },
                    "procMount": {
                      "type": "string"
                    },
                    "readOnlyRootFilesystem": {
                      "type": "boolean"
                    },
                    "runAsGroup": {
                      "type": "integer"
                    },
                    "runAsNonRoot": {
                      "type": "boolean"
                    },
                    "runAsUser": {
                      "type": "integer"
                    },
                    "seLinuxOptions": {
                      "properties": {
                        "level": {
                          "type": "string"
                        },
                        "role": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "user": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "seccompProfile": {
                      "properties": {
                        "localhostProfile": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "windowsOptions": {
                      "properties": {
                        "gmsaCredentialSpec": {
                          "type": "string"
                        },
                        "gmsaCredentialSpecName": {
                          "type": "string"
                        },
                        "hostProcess": {
                          "type": "boolean"
                        },
                        "runAsUserName": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "volumeMounts": {
                  "description": "Additional volume mounts which should be applied to the container.",
                  "items": {
                    "properties": {
                      "mountPath": {
                        "type": "string"
                      },
                      "mountPropagation": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "readOnly": {
                        "type": "boolean"
                      },
                      "recursiveReadOnly": {
                        "type": "string"
                      },
                      "subPath": {
                        "type": "string"
                      },
                      "subPathExpr": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "perPodIngress": {
              "description": "Template for Kafka per-pod `Ingress` used for access from outside of Kubernetes.",
              "properties": {
                "metadata": {
                  "description": "Metadata applied to the resource.",
                  "properties": {
                    "annotations": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Annotations added to the Kubernetes resource.",
                      "type": "object"
                    },
                    "labels": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Labels added to the Kubernetes resource.",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "perPodRoute": {
              "description": "Template for Kafka per-pod `Routes` used for access from outside of OpenShift.",
              "properties": {
                "metadata": {
                  "description": "Metadata applied to the resource.",
                  "properties": {
                    "annotations": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Annotations added to the Kubernetes resource.",
                      "type": "object"
                    },
                    "labels": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Labels added to the Kubernetes resource.",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "perPodService": {
              "description": "Template for Kafka per-pod `Services` used for access from outside of Kubernetes.",
              "properties": {
                "metadata": {
                  "description": "Metadata applied to the resource.",
                  "properties": {
                    "annotations": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Annotations added to the Kubernetes resource.",
                      "type": "object"
                    },
                    "labels": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Labels added to the Kubernetes resource.",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "persistentVolumeClaim": {
              "description": "Template for all Kafka `PersistentVolumeClaims`.",
              "properties": {
                "metadata": {
                  "description": "Metadata applied to the resource.",
                  "properties": {
                    "annotations": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Annotations added to the Kubernetes resource.",
                      "type": "object"
                    },
                    "labels": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Labels added to the Kubernetes resource.",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "pod": {
              "description": "Template for Kafka `Pods`.",
              "properties": {
                "affinity": {
                  "description": "The pod's affinity rules.",
                  "properties": {
                    "nodeAffinity": {
                      "properties": {
                        "preferredDuringSchedulingIgnoredDuringExecution": {
                          "items": {
                            "properties": {
                              "preference": {
                                "properties": {
                                  "matchExpressions": {
                                    "items": {
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "operator": {
                                          "type": "string"
                                        },
                                        "values": {
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array"
                                  },
                                  "matchFields": {
                                    "items": {
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "operator": {
                                          "type": "string"
                                        },
                                        "values": {
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "weight": {
                                "type": "integer"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "requiredDuringSchedulingIgnoredDuringExecution": {
                          "properties": {
                            "nodeSelectorTerms": {
                              "items": {
                                "properties": {
                                  "matchExpressions": {
                                    "items": {
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "operator": {
                                          "type": "string"
                                        },
                                        "values": {
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array"
                                  },
                                  "matchFields": {
                                    "items": {
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "operator": {
                                          "type": "string"
                                        },
                                        "values": {
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "type": "array"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "podAffinity": {
                      "properties": {
                        "preferredDuringSchedulingIgnoredDuringExecution": {
                          "items": {
                            "properties": {
                              "podAffinityTerm": {
                                "properties": {
                                  "labelSelector": {
                                    "properties": {
                                      "matchExpressions": {
                                        "items": {
                                          "properties": {
                                            "key": {
                                              "type": "string"
                                            },
                                            "operator": {
                                              "type": "string"
                                            },
                                            "values": {
                                              "items": {
                                                "type": "string"
                                              },
                                              "type": "array"
                                            }
                                          },
                                          "type": "object",
                                          "additionalProperties": false
                                        },
                                        "type": "array"
                                      },
                                      "matchLabels": {
                                        "additionalProperties": {
                                          "type": "string"
                                        },
                                        "type": "object"
                                      }
                                    },
                                    "type": "object",
                                    "additionalProperties": false
                                  },
                                  "matchLabelKeys": {
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "mismatchLabelKeys": {
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "namespaceSelector": {
                                    "properties": {
                                      "matchExpressions": {
                                        "items": {
                                          "properties": {
                                            "key": {
                                              "type": "string"
                                            },
                                            "operator": {
                                              "type": "string"
                                            },
                                            "values": {
                                              "items": {
                                                "type": "string"
                                              },
                                              "type": "array"
                                            }
                                          },
                                          "type": "object",
                                          "additionalProperties": false
                                        },
                                        "type": "array"
                                      },
                                      "matchLabels": {
                                        "additionalProperties": {
                                          "type": "string"
                                        },
                                        "type": "object"
                                      }
                                    },
                                    "type": "object",
                                    "additionalProperties": false
                                  },
                                  "namespaces": {
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "topologyKey": {
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "weight": {
                                "type": "integer"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "requiredDuringSchedulingIgnoredDuringExecution": {
                          "items": {
                            "properties": {
                              "labelSelector": {
                                "properties": {
                                  "matchExpressions": {
                                    "items": {
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "operator": {
                                          "type": "string"
                                        },
                                        "values": {
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array"
                                  },
                                  "matchLabels": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "type": "object"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "matchLabelKeys": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "mismatchLabelKeys": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "namespaceSelector": {
                                "properties": {
                                  "matchExpressions": {
                                    "items": {
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "operator": {
                                          "type": "string"
                                        },
                                        "values": {
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array"
                                  },
                                  "matchLabels": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "type": "object"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "namespaces": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "topologyKey": {
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "podAntiAffinity": {
                      "properties": {
                        "preferredDuringSchedulingIgnoredDuringExecution": {
                          "items": {
                            "properties": {
                              "podAffinityTerm": {
                                "properties": {
                                  "labelSelector": {
                                    "properties": {
                                      "matchExpressions": {
                                        "items": {
                                          "properties": {
                                            "key": {
                                              "type": "string"
                                            },
                                            "operator": {
                                              "type": "string"
                                            },
                                            "values": {
                                              "items": {
                                                "type": "string"
                                              },
                                              "type": "array"
                                            }
                                          },
                                          "type": "object",
                                          "additionalProperties": false
                                        },
                                        "type": "array"
                                      },
                                      "matchLabels": {
                                        "additionalProperties": {
                                          "type": "string"
                                        },
                                        "type": "object"
                                      }
                                    },
                                    "type": "object",
                                    "additionalProperties": false
                                  },
                                  "matchLabelKeys": {
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "mismatchLabelKeys": {
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "namespaceSelector": {
                                    "properties": {
                                      "matchExpressions": {
                                        "items": {
                                          "properties": {
                                            "key": {
                                              "type": "string"
                                            },
                                            "operator": {
                                              "type": "string"
                                            },
                                            "values": {
                                              "items": {
                                                "type": "string"
                                              },
                                              "type": "array"
                                            }
                                          },
                                          "type": "object",
                                          "additionalProperties": false
                                        },
                                        "type": "array"
                                      },
                                      "matchLabels": {
                                        "additionalProperties": {
                                          "type": "string"
                                        },
                                        "type": "object"
                                      }
                                    },
                                    "type": "object",
                                    "additionalProperties": false
                                  },
                                  "namespaces": {
                                    "items": {
                                      "type": "string"
                                    },
                                    "type": "array"
                                  },
                                  "topologyKey": {
                                    "type": "string"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "weight": {
                                "type": "integer"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        },
                        "requiredDuringSchedulingIgnoredDuringExecution": {
                          "items": {
                            "properties": {
                              "labelSelector": {
                                "properties": {
                                  "matchExpressions": {
                                    "items": {
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "operator": {
                                          "type": "string"
                                        },
                                        "values": {
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array"
                                  },
                                  "matchLabels": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "type": "object"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "matchLabelKeys": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "mismatchLabelKeys": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "namespaceSelector": {
                                "properties": {
                                  "matchExpressions": {
                                    "items": {
                                      "properties": {
                                        "key": {
                                          "type": "string"
                                        },
                                        "operator": {
                                          "type": "string"
                                        },
                                        "values": {
                                          "items": {
                                            "type": "string"
                                          },
                                          "type": "array"
                                        }
                                      },
                                      "type": "object",
                                      "additionalProperties": false
                                    },
                                    "type": "array"
                                  },
                                  "matchLabels": {
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "type": "object"
                                  }
                                },
                                "type": "object",
                                "additionalProperties": false
                              },
                              "namespaces": {
                                "items": {
                                  "type": "string"
                                },
                                "type": "array"
                              },
                              "topologyKey": {
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "type": "array"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "dnsConfig": {
                  "description": "The pod's DNSConfig. If specified, it will be merged to the generated DNS configuration based on the DNSPolicy.",
                  "properties": {
                    "nameservers": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "options": {
                      "items": {
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "value": {
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "searches": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "dnsPolicy": {
                  "description": "The pod's DNSPolicy. Defaults to `ClusterFirst`. Valid values are `ClusterFirstWithHostNet`, `ClusterFirst`, `Default` or `None`.",
                  "enum": [
                    "ClusterFirst",
                    "ClusterFirstWithHostNet",
                    "Default",
                    "None"
                  ],
                  "type": "string"
                },
                "enableServiceLinks": {
                  "description": "Indicates whether information about services should be injected into Pod's environment variables.",
                  "type": "boolean"
                },
                "hostAliases": {
                  "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.",
                  "items": {
                    "properties": {
                      "hostnames": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "ip": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "imagePullSecrets": {
                  "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.",
                  "items": {
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "metadata": {
                  "description": "Metadata applied to the resource.",
                  "properties": {
                    "annotations": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Annotations added to the Kubernetes resource.",
                      "type": "object"
                    },
                    "labels": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Labels added to the Kubernetes resource.",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "priorityClassName": {
                  "description": "The name of the priority class used to assign priority to the pods. ",
                  "type": "string"
                },
                "schedulerName": {
                  "description": "The name of the scheduler used to dispatch this `Pod`. If not specified, the default scheduler will be used.",
                  "type": "string"
                },
                "securityContext": {
                  "description": "Configures pod-level security attributes and common container settings.",
                  "properties": {
                    "appArmorProfile": {
                      "properties": {
                        "localhostProfile": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "fsGroup": {
                      "type": "integer"
                    },
                    "fsGroupChangePolicy": {
                      "type": "string"
                    },
                    "runAsGroup": {
                      "type": "integer"
                    },
                    "runAsNonRoot": {
                      "type": "boolean"
                    },
                    "runAsUser": {
                      "type": "integer"
                    },
                    "seLinuxChangePolicy": {
                      "type": "string"
                    },
                    "seLinuxOptions": {
                      "properties": {
                        "level": {
                          "type": "string"
                        },
                        "role": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "user": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "seccompProfile": {
                      "properties": {
                        "localhostProfile": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "supplementalGroups": {
                      "items": {
                        "type": "integer"
                      },
                      "type": "array"
                    },
                    "supplementalGroupsPolicy": {
                      "type": "string"
                    },
                    "sysctls": {
                      "items": {
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "value": {
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "type": "array"
                    },
                    "windowsOptions": {
                      "properties": {
                        "gmsaCredentialSpec": {
                          "type": "string"
                        },
                        "gmsaCredentialSpecName": {
                          "type": "string"
                        },
                        "hostProcess": {
                          "type": "boolean"
                        },
                        "runAsUserName": {
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "terminationGracePeriodSeconds": {
                  "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.",
                  "minimum": 0,
                  "type": "integer"
                },
                "tmpDirSizeLimit": {
                  "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.",
                  "pattern": "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$",
                  "type": "string"
                },
                "tolerations": {
                  "description": "The pod's tolerations.",
                  "items": {
                    "properties": {
                      "effect": {
                        "type": "string"
                      },
                      "key": {
                        "type": "string"
                      },
                      "operator": {
                        "type": "string"
                      },
                      "tolerationSeconds": {
                        "type": "integer"
                      },
                      "value": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "topologySpreadConstraints": {
                  "description": "The pod's topology spread constraints.",
                  "items": {
                    "properties": {
                      "labelSelector": {
                        "properties": {
                          "matchExpressions": {
                            "items": {
                              "properties": {
                                "key": {
                                  "type": "string"
                                },
                                "operator": {
                                  "type": "string"
                                },
                                "values": {
                                  "items": {
                                    "type": "string"
                                  },
                                  "type": "array"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "type": "array"
                          },
                          "matchLabels": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "type": "object"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "matchLabelKeys": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "maxSkew": {
                        "type": "integer"
                      },
                      "minDomains": {
                        "type": "integer"
                      },
                      "nodeAffinityPolicy": {
                        "type": "string"
                      },
                      "nodeTaintsPolicy": {
                        "type": "string"
                      },
                      "topologyKey": {
                        "type": "string"
                      },
                      "whenUnsatisfiable": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                },
                "volumes": {
                  "description": "Additional volumes that can be mounted to the pod.",
                  "items": {
                    "oneOf": [
                      {
                        "properties": {
                          "configMap": {},
                          "csi": {},
                          "emptyDir": {},
                          "image": {},
                          "persistentVolumeClaim": {},
                          "secret": {}
                        }
                      }
                    ],
                    "properties": {
                      "configMap": {
                        "description": "`ConfigMap` to use to populate the volume.",
                        "properties": {
                          "defaultMode": {
                            "type": "integer"
                          },
                          "items": {
                            "items": {
                              "properties": {
                                "key": {
                                  "type": "string"
                                },
                                "mode": {
                                  "type": "integer"
                                },
                                "path": {
                                  "type": "string"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "type": "array"
                          },
                          "name": {
                            "type": "string"
                          },
                          "optional": {
                            "type": "boolean"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "csi": {
                        "description": "`CSIVolumeSource` object to use to populate the volume.",
                        "properties": {
                          "driver": {
                            "type": "string"
                          },
                          "fsType": {
                            "type": "string"
                          },
                          "nodePublishSecretRef": {
                            "properties": {
                              "name": {
                                "type": "string"
                              }
                            },
                            "type": "object",
                            "additionalProperties": false
                          },
                          "readOnly": {
                            "type": "boolean"
                          },
                          "volumeAttributes": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "type": "object"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "emptyDir": {
                        "description": "`EmptyDir` to use to populate the volume.",
                        "properties": {
                          "medium": {
                            "description": "Medium represents the type of storage medium should back this volume. Valid values are unset or `Memory`. When not set, it will use the node's default medium.",
                            "enum": [
                              "Memory"
                            ],
                            "type": "string"
                          },
                          "sizeLimit": {
                            "description": "The total amount of local storage required for this EmptyDir volume (for example 1Gi).",
                            "pattern": "^([0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "image": {
                        "description": "`ImageVolumeSource` object to use to populate the volume.",
                        "properties": {
                          "pullPolicy": {
                            "type": "string"
                          },
                          "reference": {
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "name": {
                        "description": "Name to use for the volume. Required.",
                        "type": "string"
                      },
                      "persistentVolumeClaim": {
                        "description": "`PersistentVolumeClaim` object to use to populate the volume.",
                        "properties": {
                          "claimName": {
                            "type": "string"
                          },
                          "readOnly": {
                            "type": "boolean"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "secret": {
                        "description": "`Secret` to use to populate the volume.",
                        "properties": {
                          "defaultMode": {
                            "type": "integer"
                          },
                          "items": {
                            "items": {
                              "properties": {
                                "key": {
                                  "type": "string"
                                },
                                "mode": {
                                  "type": "integer"
                                },
                                "path": {
                                  "type": "string"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "type": "array"
                          },
                          "optional": {
                            "type": "boolean"
                          },
                          "secretName": {
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "podSet": {
              "description": "Template for Kafka `StrimziPodSet` resource.",
              "properties": {
                "metadata": {
                  "description": "Metadata applied to the resource.",
                  "properties": {
                    "annotations": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Annotations added to the Kubernetes resource.",
                      "type": "object"
                    },
                    "labels": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "Labels added to the Kubernetes resource.",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "replicas",
        "storage",
        "roles"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "The status of the KafkaNodePool.",
      "properties": {
        "clusterId": {
          "description": "Kafka cluster ID.",
          "type": "string"
        },
        "conditions": {
          "description": "List of status conditions.",
          "items": {
            "properties": {
              "lastTransitionTime": {
                "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.",
                "type": "string"
              },
              "message": {
                "description": "Human-readable message indicating details about the condition's last transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition (a single word in CamelCase).",
                "type": "string"
              },
              "status": {
                "description": "The status of the condition, either True, False or Unknown.",
                "type": "string"
              },
              "type": {
                "description": "The unique identifier of a condition, used to distinguish between other conditions in the resource.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "labelSelector": {
          "description": "Label selector for pods providing this resource.",
          "type": "string"
        },
        "nodeIds": {
          "description": "Node IDs used by Kafka nodes in this pool.",
          "items": {
            "type": "integer"
          },
          "type": "array"
        },
        "observedGeneration": {
          "description": "The generation of the CRD that was last reconciled by the operator.",
          "type": "integer"
        },
        "replicas": {
          "description": "The current number of pods being used to provide this resource.",
          "type": "integer"
        },
        "roles": {
          "description": "The roles currently assigned to this pool.",
          "items": {
            "enum": [
              "controller",
              "broker"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
