From 87f096d9272c46a0f454802ef6efc1edda2db898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Ho=C3=9F?= Date: Sun, 15 Sep 2024 07:54:22 +0200 Subject: [PATCH] add stackabletech/airflow-operator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sebastian Hoß --- .reuse/dep5 | 4 + code-generator/src/catalog.rs | 7 + .../v1alpha1/airflowclusters.ignore | 1 + .../v1alpha1/airflowclusters.yaml | 1704 +++++++++++++++++ 4 files changed, 1716 insertions(+) create mode 100644 crd-catalog/stackabletech/airflow-operator/airflow.stackable.tech/v1alpha1/airflowclusters.ignore create mode 100644 crd-catalog/stackabletech/airflow-operator/airflow.stackable.tech/v1alpha1/airflowclusters.yaml diff --git a/.reuse/dep5 b/.reuse/dep5 index 3483fa90f..422a84c29 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -1159,6 +1159,10 @@ Files: crd-catalog/SparebankenVest/azure-key-vault-to-kubernetes/* Copyright: The SparebankenVest/azure-key-vault-to-kubernetes Authors License: Apache-2.0 +Files: crd-catalog/stackabletech/airflow-operator/* +Copyright: The stackabletech/airflow-operator Authors +License: OSL-3.0 + Files: crd-catalog/stackabletech/druid-operator/* Copyright: The stackabletech/druid-operator Authors License: OSL-3.0 diff --git a/code-generator/src/catalog.rs b/code-generator/src/catalog.rs index ea1d6379b..7cac081db 100644 --- a/code-generator/src/catalog.rs +++ b/code-generator/src/catalog.rs @@ -2880,6 +2880,13 @@ pub const CRD_V1_SOURCES: &'static [UpstreamSource] = &[ "https://github.com/SparebankenVest/azure-key-vault-to-kubernetes/blob/master/crds/AzureManagedIdentity.yaml", ], }, + UpstreamSource { + project_name: "stackabletech/airflow-operator", + license: OSL_V3, + urls: &[ + "https://github.com/stackabletech/airflow-operator/blob/main/deploy/helm/airflow-operator/crds/crds.yaml", + ], + }, UpstreamSource { project_name: "stackabletech/druid-operator", license: OSL_V3, diff --git a/crd-catalog/stackabletech/airflow-operator/airflow.stackable.tech/v1alpha1/airflowclusters.ignore b/crd-catalog/stackabletech/airflow-operator/airflow.stackable.tech/v1alpha1/airflowclusters.ignore new file mode 100644 index 000000000..9bbee1d1b --- /dev/null +++ b/crd-catalog/stackabletech/airflow-operator/airflow.stackable.tech/v1alpha1/airflowclusters.ignore @@ -0,0 +1 @@ +cannot find type `AirflowClusterWebserversRoleGroupsConfigOverrides` in this scope diff --git a/crd-catalog/stackabletech/airflow-operator/airflow.stackable.tech/v1alpha1/airflowclusters.yaml b/crd-catalog/stackabletech/airflow-operator/airflow.stackable.tech/v1alpha1/airflowclusters.yaml new file mode 100644 index 000000000..7937c38d4 --- /dev/null +++ b/crd-catalog/stackabletech/airflow-operator/airflow.stackable.tech/v1alpha1/airflowclusters.yaml @@ -0,0 +1,1704 @@ +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" +metadata: + annotations: + helm.sh/resource-policy: "keep" + name: "airflowclusters.airflow.stackable.tech" +spec: + group: "airflow.stackable.tech" + names: + categories: [] + kind: "AirflowCluster" + plural: "airflowclusters" + shortNames: + - "airflow" + singular: "airflowcluster" + scope: "Namespaced" + versions: + - additionalPrinterColumns: [] + name: "v1alpha1" + schema: + openAPIV3Schema: + description: "Auto-generated derived type for AirflowClusterSpec via `CustomResource`" + properties: + spec: + description: "An Airflow cluster stacklet. This resource is managed by the Stackable operator for Apache Airflow. Find more information on how to use it and the resources that the operator generates in the [operator documentation](https://docs.stackable.tech/home/nightly/airflow/).\n\nThe CRD contains three roles: webserver, scheduler and worker/celeryExecutor. You can use either the celeryExecutor or the kubernetesExecutor." + oneOf: + - required: + - "celeryExecutors" + - required: + - "kubernetesExecutors" + properties: + celeryExecutors: + description: "The celery executor. Deployed with an explicit number of replicas." + properties: + cliOverrides: + additionalProperties: + type: "string" + default: {} + type: "object" + config: + default: {} + properties: + affinity: + default: + nodeAffinity: null + nodeSelector: null + podAffinity: null + podAntiAffinity: null + description: "These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement)." + properties: + nodeAffinity: + description: "Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + nodeSelector: + additionalProperties: + type: "string" + description: "Simple key-value pairs forming a nodeSelector, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + podAffinity: + description: "Same as the `spec.affinity.podAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + podAntiAffinity: + description: "Same as the `spec.affinity.podAntiAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + required: + - "nodeAffinity" + - "podAffinity" + - "podAntiAffinity" + type: "object" + gracefulShutdownTimeout: + description: "Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details." + nullable: true + type: "string" + logging: + default: + containers: {} + enableVectorAgent: null + description: "Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging)." + properties: + containers: + additionalProperties: + anyOf: + - required: + - "custom" + - {} + description: "Log configuration of the container" + properties: + console: + description: "Configuration for the console appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + custom: + description: "Custom log configuration provided in a ConfigMap" + properties: + configMap: + description: "ConfigMap containing the log configuration files" + nullable: true + type: "string" + type: "object" + file: + description: "Configuration for the file appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + loggers: + additionalProperties: + description: "Configuration of a logger" + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + default: {} + description: "Configuration per logger" + type: "object" + type: "object" + description: "Log configuration per container." + type: "object" + enableVectorAgent: + description: "Wether or not to deploy a container with the Vector log agent." + nullable: true + type: "boolean" + type: "object" + resources: + default: + cpu: + max: null + min: null + memory: + limit: null + runtimeLimits: {} + storage: {} + description: "Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any." + properties: + cpu: + default: + max: null + min: null + properties: + max: + description: "The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + min: + description: "The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + type: "object" + memory: + properties: + limit: + description: "The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`" + nullable: true + type: "string" + runtimeLimits: + description: "Additional options that can be specified." + type: "object" + type: "object" + storage: + type: "object" + type: "object" + type: "object" + configOverrides: + additionalProperties: + additionalProperties: + type: "string" + type: "object" + default: {} + description: "The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product." + type: "object" + envOverrides: + additionalProperties: + type: "string" + default: {} + description: "`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available." + type: "object" + podOverrides: + default: {} + description: "In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information." + type: "object" + x-kubernetes-preserve-unknown-fields: true + roleConfig: + default: + podDisruptionBudget: + enabled: true + maxUnavailable: null + description: "This is a product-agnostic RoleConfig, which is sufficient for most of the products." + properties: + podDisruptionBudget: + default: + enabled: true + maxUnavailable: null + description: "This struct is used to configure:\n\n1. If PodDisruptionBudgets are created by the operator 2. The allowed number of Pods to be unavailable (`maxUnavailable`)\n\nLearn more in the [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions)." + properties: + enabled: + default: true + description: "Whether a PodDisruptionBudget should be written out for this role. Disabling this enables you to specify your own - custom - one. Defaults to true." + type: "boolean" + maxUnavailable: + description: "The number of Pods that are allowed to be down because of voluntary disruptions. If you don't explicitly set this, the operator will use a sane default based upon knowledge about the individual product." + format: "uint16" + minimum: 0.0 + nullable: true + type: "integer" + type: "object" + type: "object" + roleGroups: + additionalProperties: + properties: + cliOverrides: + additionalProperties: + type: "string" + default: {} + type: "object" + config: + default: {} + properties: + affinity: + default: + nodeAffinity: null + nodeSelector: null + podAffinity: null + podAntiAffinity: null + description: "These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement)." + properties: + nodeAffinity: + description: "Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + nodeSelector: + additionalProperties: + type: "string" + description: "Simple key-value pairs forming a nodeSelector, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + podAffinity: + description: "Same as the `spec.affinity.podAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + podAntiAffinity: + description: "Same as the `spec.affinity.podAntiAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + required: + - "nodeAffinity" + - "podAffinity" + - "podAntiAffinity" + type: "object" + gracefulShutdownTimeout: + description: "Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details." + nullable: true + type: "string" + logging: + default: + containers: {} + enableVectorAgent: null + description: "Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging)." + properties: + containers: + additionalProperties: + anyOf: + - required: + - "custom" + - {} + description: "Log configuration of the container" + properties: + console: + description: "Configuration for the console appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + custom: + description: "Custom log configuration provided in a ConfigMap" + properties: + configMap: + description: "ConfigMap containing the log configuration files" + nullable: true + type: "string" + type: "object" + file: + description: "Configuration for the file appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + loggers: + additionalProperties: + description: "Configuration of a logger" + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + default: {} + description: "Configuration per logger" + type: "object" + type: "object" + description: "Log configuration per container." + type: "object" + enableVectorAgent: + description: "Wether or not to deploy a container with the Vector log agent." + nullable: true + type: "boolean" + type: "object" + resources: + default: + cpu: + max: null + min: null + memory: + limit: null + runtimeLimits: {} + storage: {} + description: "Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any." + properties: + cpu: + default: + max: null + min: null + properties: + max: + description: "The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + min: + description: "The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + type: "object" + memory: + properties: + limit: + description: "The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`" + nullable: true + type: "string" + runtimeLimits: + description: "Additional options that can be specified." + type: "object" + type: "object" + storage: + type: "object" + type: "object" + type: "object" + configOverrides: + additionalProperties: + additionalProperties: + type: "string" + type: "object" + default: {} + description: "The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product." + type: "object" + envOverrides: + additionalProperties: + type: "string" + default: {} + description: "`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available." + type: "object" + podOverrides: + default: {} + description: "In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information." + type: "object" + x-kubernetes-preserve-unknown-fields: true + replicas: + format: "uint16" + minimum: 0.0 + nullable: true + type: "integer" + type: "object" + type: "object" + required: + - "roleGroups" + type: "object" + clusterConfig: + description: "Configuration that applies to all roles and role groups. This includes settings for authentication, git sync, service exposition and volumes, among other things." + properties: + authentication: + default: [] + description: "The Airflow [authentication](https://docs.stackable.tech/home/nightly/airflow/usage-guide/security.html) settings. Currently the underlying Flask App Builder only supports one authentication mechanism at a time. This means the operator will error out if multiple references to an AuthenticationClass are provided." + items: + properties: + authenticationClass: + description: "Name of the [AuthenticationClass](https://docs.stackable.tech/home/nightly/concepts/authentication.html#authenticationclass) used to authenticate the users. At the moment only LDAP is supported. If not specified the default authentication (AUTH_DB) will be used." + nullable: true + type: "string" + syncRolesAt: + default: "Registration" + description: "If we should replace ALL the user's roles each login, or only on registration. Gets mapped to `AUTH_ROLES_SYNC_AT_LOGIN`" + enum: + - "Registration" + - "Login" + type: "string" + userRegistration: + default: true + description: "Allow users who are not already in the FAB DB. Gets mapped to `AUTH_USER_REGISTRATION`" + type: "boolean" + userRegistrationRole: + default: "Public" + description: "This role will be given in addition to any AUTH_ROLES_MAPPING. Gets mapped to `AUTH_USER_REGISTRATION_ROLE`" + type: "string" + type: "object" + type: "array" + credentialsSecret: + description: "The name of the Secret object containing the admin user credentials and database connection details. Read the [getting started guide first steps](https://docs.stackable.tech/home/nightly/airflow/getting_started/first_steps) to find out more." + type: "string" + dagsGitSync: + default: [] + description: "The `gitSync` settings allow configuring DAGs to mount via `git-sync`. Learn more in the [mounting DAGs documentation](https://docs.stackable.tech/home/nightly/airflow/usage-guide/mounting-dags#_via_git_sync)." + items: + properties: + branch: + description: "The branch to clone. Defaults to `main`. Since git-sync v4.x.x this field is mapped to the flag `--ref`." + nullable: true + type: "string" + credentialsSecret: + description: "The name of the Secret used to access the repository if it is not public. This should include two fields: `user` and `password`. The `password` field can either be an actual password (not recommended) or a GitHub token, as described [here](https://github.com/kubernetes/git-sync/tree/v4.2.4?tab=readme-ov-file#manual)." + nullable: true + type: "string" + depth: + description: "The depth of syncing i.e. the number of commits to clone; defaults to 1." + format: "uint8" + minimum: 0.0 + nullable: true + type: "integer" + gitFolder: + description: "The location of the DAG folder, relative to the synced repository root." + nullable: true + type: "string" + gitSyncConf: + additionalProperties: + type: "string" + description: "A map of optional configuration settings that are listed in the [git-sync documentation](https://github.com/kubernetes/git-sync/tree/v4.2.4?tab=readme-ov-file#manual). Read the [git sync example](https://docs.stackable.tech/home/nightly/airflow/usage-guide/mounting-dags#_example)." + nullable: true + type: "object" + repo: + description: "The git repository URL that will be cloned, for example: `https://github.com/stackabletech/airflow-operator`." + type: "string" + wait: + description: "The synchronization interval in seconds; defaults to 20 seconds. Since git-sync v4.x.x this field is mapped to the flag `--period`." + format: "uint16" + minimum: 0.0 + nullable: true + type: "integer" + required: + - "repo" + type: "object" + type: "array" + exposeConfig: + default: false + description: "for internal use only - not for production use." + type: "boolean" + listenerClass: + default: "cluster-internal" + description: "This field controls which type of Service the Operator creates for this AirflowCluster:\n\n* cluster-internal: Use a ClusterIP service\n\n* external-unstable: Use a NodePort service\n\n* external-stable: Use a LoadBalancer service\n\nThis is a temporary solution with the goal to keep yaml manifests forward compatible. In the future, this setting will control which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) will be used to expose the service, and ListenerClass names will stay the same, allowing for a non-breaking change." + enum: + - "cluster-internal" + - "external-unstable" + - "external-stable" + type: "string" + loadExamples: + default: false + description: "Whether to load example DAGs or not; defaults to false. The examples are used in the [getting started guide](https://docs.stackable.tech/home/nightly/airflow/getting_started/)." + type: "boolean" + vectorAggregatorConfigMapName: + description: "Name of the Vector aggregator [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery). It must contain the key `ADDRESS` with the address of the Vector aggregator. Follow the [logging tutorial](https://docs.stackable.tech/home/nightly/tutorials/logging-vector-aggregator) to learn how to configure log aggregation with Vector." + nullable: true + type: "string" + volumeMounts: + default: [] + description: "Additional volumes to mount. Use together with `volumes` to define volumes." + items: + type: "object" + x-kubernetes-preserve-unknown-fields: true + type: "array" + volumes: + default: [] + description: "Additional volumes to define. Use together with `volumeMounts` to mount the volumes." + items: + type: "object" + x-kubernetes-preserve-unknown-fields: true + type: "array" + required: + - "credentialsSecret" + type: "object" + clusterOperation: + default: + reconciliationPaused: false + stopped: false + description: "[Cluster operations](https://docs.stackable.tech/home/nightly/concepts/operations/cluster_operations) properties, allow stopping the product instance as well as pausing reconciliation." + properties: + reconciliationPaused: + default: false + description: "Flag to stop cluster reconciliation by the operator. This means that all changes in the custom resource spec are ignored until this flag is set to false or removed. The operator will however still watch the deployed resources at the time and update the custom resource status field. If applied at the same time with `stopped`, `reconciliationPaused` will take precedence over `stopped` and stop the reconciliation immediately." + type: "boolean" + stopped: + default: false + description: "Flag to stop the cluster. This means all deployed resources (e.g. Services, StatefulSets, ConfigMaps) are kept but all deployed Pods (e.g. replicas from a StatefulSet) are scaled to 0 and therefore stopped and removed. If applied at the same time with `reconciliationPaused`, the latter will pause reconciliation and `stopped` will take no effect until `reconciliationPaused` is set to false or removed." + type: "boolean" + type: "object" + image: + anyOf: + - required: + - "custom" + - "productVersion" + - required: + - "productVersion" + description: "Specify which image to use, the easiest way is to only configure the `productVersion`. You can also configure a custom image registry to pull from, as well as completely custom images.\n\nConsult the [Product image selection documentation](https://docs.stackable.tech/home/nightly/concepts/product_image_selection) for details." + properties: + custom: + description: "Overwrite the docker image. Specify the full docker image name, e.g. `docker.stackable.tech/stackable/superset:1.4.1-stackable2.1.0`" + type: "string" + productVersion: + description: "Version of the product, e.g. `1.4.1`." + type: "string" + pullPolicy: + default: "Always" + description: "[Pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) used when pulling the image." + enum: + - "IfNotPresent" + - "Always" + - "Never" + type: "string" + pullSecrets: + description: "[Image pull secrets](https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod) to pull images from a private registry." + items: + description: "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace." + properties: + name: + description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + type: "string" + type: "object" + nullable: true + type: "array" + repo: + description: "Name of the docker repo, e.g. `docker.stackable.tech/stackable`" + nullable: true + type: "string" + stackableVersion: + description: "Stackable version of the product, e.g. `23.4`, `23.4.1` or `0.0.0-dev`. If not specified, the operator will use its own version, e.g. `23.4.1`. When using a nightly operator or a pr version, it will use the nightly `0.0.0-dev` image." + nullable: true + type: "string" + type: "object" + kubernetesExecutors: + description: "With the Kuberentes executor, executor Pods are created on demand." + properties: + cliOverrides: + additionalProperties: + type: "string" + default: {} + type: "object" + config: + default: {} + properties: + affinity: + default: + nodeAffinity: null + nodeSelector: null + podAffinity: null + podAntiAffinity: null + description: "These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement)." + properties: + nodeAffinity: + description: "Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + nodeSelector: + additionalProperties: + type: "string" + description: "Simple key-value pairs forming a nodeSelector, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + podAffinity: + description: "Same as the `spec.affinity.podAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + podAntiAffinity: + description: "Same as the `spec.affinity.podAntiAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + required: + - "nodeAffinity" + - "podAffinity" + - "podAntiAffinity" + type: "object" + gracefulShutdownTimeout: + description: "Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details." + nullable: true + type: "string" + logging: + default: + containers: {} + enableVectorAgent: null + description: "Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging)." + properties: + containers: + additionalProperties: + anyOf: + - required: + - "custom" + - {} + description: "Log configuration of the container" + properties: + console: + description: "Configuration for the console appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + custom: + description: "Custom log configuration provided in a ConfigMap" + properties: + configMap: + description: "ConfigMap containing the log configuration files" + nullable: true + type: "string" + type: "object" + file: + description: "Configuration for the file appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + loggers: + additionalProperties: + description: "Configuration of a logger" + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + default: {} + description: "Configuration per logger" + type: "object" + type: "object" + description: "Log configuration per container." + type: "object" + enableVectorAgent: + description: "Wether or not to deploy a container with the Vector log agent." + nullable: true + type: "boolean" + type: "object" + resources: + default: + cpu: + max: null + min: null + memory: + limit: null + runtimeLimits: {} + storage: {} + description: "Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any." + properties: + cpu: + default: + max: null + min: null + properties: + max: + description: "The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + min: + description: "The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + type: "object" + memory: + properties: + limit: + description: "The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`" + nullable: true + type: "string" + runtimeLimits: + description: "Additional options that can be specified." + type: "object" + type: "object" + storage: + type: "object" + type: "object" + type: "object" + configOverrides: + additionalProperties: + additionalProperties: + type: "string" + type: "object" + default: {} + description: "The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product." + type: "object" + envOverrides: + additionalProperties: + type: "string" + default: {} + description: "`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available." + type: "object" + podOverrides: + default: {} + description: "In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information." + type: "object" + x-kubernetes-preserve-unknown-fields: true + type: "object" + schedulers: + description: "The `scheduler` is responsible for triggering jobs and persisting their metadata to the backend database. Jobs are scheduled on the workers/executors." + nullable: true + properties: + cliOverrides: + additionalProperties: + type: "string" + default: {} + type: "object" + config: + default: {} + properties: + affinity: + default: + nodeAffinity: null + nodeSelector: null + podAffinity: null + podAntiAffinity: null + description: "These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement)." + properties: + nodeAffinity: + description: "Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + nodeSelector: + additionalProperties: + type: "string" + description: "Simple key-value pairs forming a nodeSelector, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + podAffinity: + description: "Same as the `spec.affinity.podAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + podAntiAffinity: + description: "Same as the `spec.affinity.podAntiAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + required: + - "nodeAffinity" + - "podAffinity" + - "podAntiAffinity" + type: "object" + gracefulShutdownTimeout: + description: "Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details." + nullable: true + type: "string" + logging: + default: + containers: {} + enableVectorAgent: null + description: "Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging)." + properties: + containers: + additionalProperties: + anyOf: + - required: + - "custom" + - {} + description: "Log configuration of the container" + properties: + console: + description: "Configuration for the console appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + custom: + description: "Custom log configuration provided in a ConfigMap" + properties: + configMap: + description: "ConfigMap containing the log configuration files" + nullable: true + type: "string" + type: "object" + file: + description: "Configuration for the file appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + loggers: + additionalProperties: + description: "Configuration of a logger" + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + default: {} + description: "Configuration per logger" + type: "object" + type: "object" + description: "Log configuration per container." + type: "object" + enableVectorAgent: + description: "Wether or not to deploy a container with the Vector log agent." + nullable: true + type: "boolean" + type: "object" + resources: + default: + cpu: + max: null + min: null + memory: + limit: null + runtimeLimits: {} + storage: {} + description: "Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any." + properties: + cpu: + default: + max: null + min: null + properties: + max: + description: "The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + min: + description: "The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + type: "object" + memory: + properties: + limit: + description: "The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`" + nullable: true + type: "string" + runtimeLimits: + description: "Additional options that can be specified." + type: "object" + type: "object" + storage: + type: "object" + type: "object" + type: "object" + configOverrides: + additionalProperties: + additionalProperties: + type: "string" + type: "object" + default: {} + description: "The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product." + type: "object" + envOverrides: + additionalProperties: + type: "string" + default: {} + description: "`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available." + type: "object" + podOverrides: + default: {} + description: "In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information." + type: "object" + x-kubernetes-preserve-unknown-fields: true + roleConfig: + default: + podDisruptionBudget: + enabled: true + maxUnavailable: null + description: "This is a product-agnostic RoleConfig, which is sufficient for most of the products." + properties: + podDisruptionBudget: + default: + enabled: true + maxUnavailable: null + description: "This struct is used to configure:\n\n1. If PodDisruptionBudgets are created by the operator 2. The allowed number of Pods to be unavailable (`maxUnavailable`)\n\nLearn more in the [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions)." + properties: + enabled: + default: true + description: "Whether a PodDisruptionBudget should be written out for this role. Disabling this enables you to specify your own - custom - one. Defaults to true." + type: "boolean" + maxUnavailable: + description: "The number of Pods that are allowed to be down because of voluntary disruptions. If you don't explicitly set this, the operator will use a sane default based upon knowledge about the individual product." + format: "uint16" + minimum: 0.0 + nullable: true + type: "integer" + type: "object" + type: "object" + roleGroups: + additionalProperties: + properties: + cliOverrides: + additionalProperties: + type: "string" + default: {} + type: "object" + config: + default: {} + properties: + affinity: + default: + nodeAffinity: null + nodeSelector: null + podAffinity: null + podAntiAffinity: null + description: "These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement)." + properties: + nodeAffinity: + description: "Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + nodeSelector: + additionalProperties: + type: "string" + description: "Simple key-value pairs forming a nodeSelector, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + podAffinity: + description: "Same as the `spec.affinity.podAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + podAntiAffinity: + description: "Same as the `spec.affinity.podAntiAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + required: + - "nodeAffinity" + - "podAffinity" + - "podAntiAffinity" + type: "object" + gracefulShutdownTimeout: + description: "Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details." + nullable: true + type: "string" + logging: + default: + containers: {} + enableVectorAgent: null + description: "Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging)." + properties: + containers: + additionalProperties: + anyOf: + - required: + - "custom" + - {} + description: "Log configuration of the container" + properties: + console: + description: "Configuration for the console appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + custom: + description: "Custom log configuration provided in a ConfigMap" + properties: + configMap: + description: "ConfigMap containing the log configuration files" + nullable: true + type: "string" + type: "object" + file: + description: "Configuration for the file appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + loggers: + additionalProperties: + description: "Configuration of a logger" + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + default: {} + description: "Configuration per logger" + type: "object" + type: "object" + description: "Log configuration per container." + type: "object" + enableVectorAgent: + description: "Wether or not to deploy a container with the Vector log agent." + nullable: true + type: "boolean" + type: "object" + resources: + default: + cpu: + max: null + min: null + memory: + limit: null + runtimeLimits: {} + storage: {} + description: "Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any." + properties: + cpu: + default: + max: null + min: null + properties: + max: + description: "The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + min: + description: "The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + type: "object" + memory: + properties: + limit: + description: "The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`" + nullable: true + type: "string" + runtimeLimits: + description: "Additional options that can be specified." + type: "object" + type: "object" + storage: + type: "object" + type: "object" + type: "object" + configOverrides: + additionalProperties: + additionalProperties: + type: "string" + type: "object" + default: {} + description: "The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product." + type: "object" + envOverrides: + additionalProperties: + type: "string" + default: {} + description: "`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available." + type: "object" + podOverrides: + default: {} + description: "In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information." + type: "object" + x-kubernetes-preserve-unknown-fields: true + replicas: + format: "uint16" + minimum: 0.0 + nullable: true + type: "integer" + type: "object" + type: "object" + required: + - "roleGroups" + type: "object" + webservers: + description: "The `webserver` role provides the main UI for user interaction." + nullable: true + properties: + cliOverrides: + additionalProperties: + type: "string" + default: {} + type: "object" + config: + default: {} + properties: + affinity: + default: + nodeAffinity: null + nodeSelector: null + podAffinity: null + podAntiAffinity: null + description: "These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement)." + properties: + nodeAffinity: + description: "Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + nodeSelector: + additionalProperties: + type: "string" + description: "Simple key-value pairs forming a nodeSelector, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + podAffinity: + description: "Same as the `spec.affinity.podAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + podAntiAffinity: + description: "Same as the `spec.affinity.podAntiAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + required: + - "nodeAffinity" + - "podAffinity" + - "podAntiAffinity" + type: "object" + gracefulShutdownTimeout: + description: "Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details." + nullable: true + type: "string" + logging: + default: + containers: {} + enableVectorAgent: null + description: "Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging)." + properties: + containers: + additionalProperties: + anyOf: + - required: + - "custom" + - {} + description: "Log configuration of the container" + properties: + console: + description: "Configuration for the console appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + custom: + description: "Custom log configuration provided in a ConfigMap" + properties: + configMap: + description: "ConfigMap containing the log configuration files" + nullable: true + type: "string" + type: "object" + file: + description: "Configuration for the file appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + loggers: + additionalProperties: + description: "Configuration of a logger" + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + default: {} + description: "Configuration per logger" + type: "object" + type: "object" + description: "Log configuration per container." + type: "object" + enableVectorAgent: + description: "Wether or not to deploy a container with the Vector log agent." + nullable: true + type: "boolean" + type: "object" + resources: + default: + cpu: + max: null + min: null + memory: + limit: null + runtimeLimits: {} + storage: {} + description: "Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any." + properties: + cpu: + default: + max: null + min: null + properties: + max: + description: "The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + min: + description: "The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + type: "object" + memory: + properties: + limit: + description: "The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`" + nullable: true + type: "string" + runtimeLimits: + description: "Additional options that can be specified." + type: "object" + type: "object" + storage: + type: "object" + type: "object" + type: "object" + configOverrides: + additionalProperties: + additionalProperties: + type: "string" + type: "object" + default: {} + description: "The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product." + type: "object" + envOverrides: + additionalProperties: + type: "string" + default: {} + description: "`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available." + type: "object" + podOverrides: + default: {} + description: "In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information." + type: "object" + x-kubernetes-preserve-unknown-fields: true + roleConfig: + default: + podDisruptionBudget: + enabled: true + maxUnavailable: null + description: "This is a product-agnostic RoleConfig, which is sufficient for most of the products." + properties: + podDisruptionBudget: + default: + enabled: true + maxUnavailable: null + description: "This struct is used to configure:\n\n1. If PodDisruptionBudgets are created by the operator 2. The allowed number of Pods to be unavailable (`maxUnavailable`)\n\nLearn more in the [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions)." + properties: + enabled: + default: true + description: "Whether a PodDisruptionBudget should be written out for this role. Disabling this enables you to specify your own - custom - one. Defaults to true." + type: "boolean" + maxUnavailable: + description: "The number of Pods that are allowed to be down because of voluntary disruptions. If you don't explicitly set this, the operator will use a sane default based upon knowledge about the individual product." + format: "uint16" + minimum: 0.0 + nullable: true + type: "integer" + type: "object" + type: "object" + roleGroups: + additionalProperties: + properties: + cliOverrides: + additionalProperties: + type: "string" + default: {} + type: "object" + config: + default: {} + properties: + affinity: + default: + nodeAffinity: null + nodeSelector: null + podAffinity: null + podAntiAffinity: null + description: "These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement)." + properties: + nodeAffinity: + description: "Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + nodeSelector: + additionalProperties: + type: "string" + description: "Simple key-value pairs forming a nodeSelector, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + podAffinity: + description: "Same as the `spec.affinity.podAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + podAntiAffinity: + description: "Same as the `spec.affinity.podAntiAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)" + nullable: true + type: "object" + x-kubernetes-preserve-unknown-fields: true + required: + - "nodeAffinity" + - "podAffinity" + - "podAntiAffinity" + type: "object" + gracefulShutdownTimeout: + description: "Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details." + nullable: true + type: "string" + logging: + default: + containers: {} + enableVectorAgent: null + description: "Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging)." + properties: + containers: + additionalProperties: + anyOf: + - required: + - "custom" + - {} + description: "Log configuration of the container" + properties: + console: + description: "Configuration for the console appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + custom: + description: "Custom log configuration provided in a ConfigMap" + properties: + configMap: + description: "ConfigMap containing the log configuration files" + nullable: true + type: "string" + type: "object" + file: + description: "Configuration for the file appender" + nullable: true + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + loggers: + additionalProperties: + description: "Configuration of a logger" + properties: + level: + description: "The log level threshold. Log events with a lower log level are discarded." + enum: + - "TRACE" + - "DEBUG" + - "INFO" + - "WARN" + - "ERROR" + - "FATAL" + - "NONE" + nullable: true + type: "string" + type: "object" + default: {} + description: "Configuration per logger" + type: "object" + type: "object" + description: "Log configuration per container." + type: "object" + enableVectorAgent: + description: "Wether or not to deploy a container with the Vector log agent." + nullable: true + type: "boolean" + type: "object" + resources: + default: + cpu: + max: null + min: null + memory: + limit: null + runtimeLimits: {} + storage: {} + description: "Resource usage is configured here, this includes CPU usage, memory usage and disk storage usage, if this role needs any." + properties: + cpu: + default: + max: null + min: null + properties: + max: + description: "The maximum amount of CPU cores that can be requested by Pods. Equivalent to the `limit` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + min: + description: "The minimal amount of CPU cores that Pods need to run. Equivalent to the `request` for Pod resource configuration. Cores are specified either as a decimal point number or as milli units. For example:`1.5` will be 1.5 cores, also written as `1500m`." + nullable: true + type: "string" + type: "object" + memory: + properties: + limit: + description: "The maximum amount of memory that should be available to the Pod. Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/), which means these suffixes are supported: E, P, T, G, M, k. You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki. For example, the following represent roughly the same value: `128974848, 129e6, 129M, 128974848000m, 123Mi`" + nullable: true + type: "string" + runtimeLimits: + description: "Additional options that can be specified." + type: "object" + type: "object" + storage: + type: "object" + type: "object" + type: "object" + configOverrides: + additionalProperties: + additionalProperties: + type: "string" + type: "object" + default: {} + description: "The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product." + type: "object" + envOverrides: + additionalProperties: + type: "string" + default: {} + description: "`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available." + type: "object" + podOverrides: + default: {} + description: "In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information." + type: "object" + x-kubernetes-preserve-unknown-fields: true + replicas: + format: "uint16" + minimum: 0.0 + nullable: true + type: "integer" + type: "object" + type: "object" + required: + - "roleGroups" + type: "object" + required: + - "clusterConfig" + - "image" + type: "object" + status: + nullable: true + properties: + conditions: + default: [] + items: + properties: + lastTransitionTime: + description: "Last time the condition transitioned from one status to another." + format: "date-time" + nullable: true + type: "string" + lastUpdateTime: + description: "The last time this condition was updated." + format: "date-time" + nullable: true + type: "string" + message: + description: "A human readable message indicating details about the transition." + nullable: true + type: "string" + reason: + description: "The reason for the condition's last transition." + nullable: true + type: "string" + status: + description: "Status of the condition, one of True, False, Unknown." + enum: + - "True" + - "False" + - "Unknown" + type: "string" + type: + description: "Type of deployment condition." + enum: + - "Available" + - "Degraded" + - "Progressing" + - "ReconciliationPaused" + - "Stopped" + type: "string" + required: + - "status" + - "type" + type: "object" + type: "array" + type: "object" + required: + - "spec" + title: "AirflowCluster" + type: "object" + served: true + storage: true + subresources: + status: {}