This is an automated email from the ASF dual-hosted git repository.
jedcunningham pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 1a828f393b Support naming customization on helm chart resources
(#31066)
1a828f393b is described below
commit 1a828f393b220abbcd3a751bf98a6ec003776c1e
Author: Felipe Galindo Sanchez <[email protected]>
AuthorDate: Tue Aug 15 17:06:39 2023 -0700
Support naming customization on helm chart resources (#31066)
---
.github/workflows/ci.yml | 10 ++-
chart/newsfragments/31066.significant.rst | 23 +++++++
chart/templates/NOTES.txt | 4 +-
chart/templates/_helpers.yaml | 63 ++++++++++-------
chart/templates/cleanup/cleanup-cronjob.yaml | 2 +-
chart/templates/configmaps/statsd-configmap.yaml | 2 +-
.../dag-processor/dag-processor-deployment.yaml | 2 +-
chart/templates/flower/flower-deployment.yaml | 2 +-
chart/templates/flower/flower-ingress.yaml | 2 +-
chart/templates/flower/flower-networkpolicy.yaml | 2 +-
chart/templates/flower/flower-service.yaml | 2 +-
chart/templates/jobs/create-user-job.yaml | 2 +-
chart/templates/jobs/migrate-database-job.yaml | 2 +-
.../templates/pgbouncer/pgbouncer-deployment.yaml | 2 +-
.../pgbouncer/pgbouncer-networkpolicy.yaml | 2 +-
.../pgbouncer/pgbouncer-poddisruptionbudget.yaml | 2 +-
chart/templates/pgbouncer/pgbouncer-service.yaml | 2 +-
chart/templates/rbac/pod-cleanup-role.yaml | 2 +-
chart/templates/rbac/pod-cleanup-rolebinding.yaml | 4 +-
chart/templates/rbac/pod-launcher-role.yaml | 2 +-
chart/templates/rbac/pod-launcher-rolebinding.yaml | 4 +-
chart/templates/rbac/pod-log-reader-role.yaml | 2 +-
.../templates/rbac/pod-log-reader-rolebinding.yaml | 4 +-
.../security-context-constraint-rolebinding.yaml | 2 +-
chart/templates/redis/redis-networkpolicy.yaml | 2 +-
chart/templates/redis/redis-service.yaml | 2 +-
chart/templates/redis/redis-statefulset.yaml | 4 +-
.../templates/scheduler/scheduler-deployment.yaml | 4 +-
.../scheduler/scheduler-networkpolicy.yaml | 2 +-
.../scheduler/scheduler-poddisruptionbudget.yaml | 2 +-
chart/templates/scheduler/scheduler-service.yaml | 2 +-
chart/templates/secrets/elasticsearch-secret.yaml | 2 +-
chart/templates/secrets/flower-secret.yaml | 2 +-
.../secrets/metadata-connection-secret.yaml | 2 +-
chart/templates/secrets/registry-secret.yaml | 2 +-
.../secrets/result-backend-connection-secret.yaml | 2 +-
.../secrets/webserver-secret-key-secret.yaml | 2 +-
chart/templates/statsd/statsd-deployment.yaml | 4 +-
chart/templates/statsd/statsd-networkpolicy.yaml | 2 +-
chart/templates/statsd/statsd-service.yaml | 2 +-
.../templates/triggerer/triggerer-deployment.yaml | 2 +-
.../triggerer/triggerer-networkpolicy.yaml | 2 +-
chart/templates/triggerer/triggerer-service.yaml | 2 +-
.../templates/webserver/webserver-deployment.yaml | 2 +-
chart/templates/webserver/webserver-ingress.yaml | 5 +-
.../webserver/webserver-networkpolicy.yaml | 2 +-
.../webserver/webserver-poddisruptionbudget.yaml | 2 +-
chart/templates/webserver/webserver-service.yaml | 2 +-
chart/templates/workers/worker-deployment.yaml | 4 +-
chart/templates/workers/worker-kedaautoscaler.yaml | 4 +-
chart/templates/workers/worker-networkpolicy.yaml | 2 +-
chart/templates/workers/worker-service.yaml | 2 +-
chart/values.schema.json | 6 ++
chart/values.yaml | 14 ++++
.../airflow_breeze/commands/kubernetes_commands.py | 23 +++++++
.../commands/kubernetes_commands_config.py | 2 +
docs/helm-chart/index.rst | 28 ++++++++
helm_tests/airflow_aux/test_basic_helm_chart.py | 68 +++++++++++++++---
helm_tests/airflow_aux/test_cleanup_pods.py | 2 +-
helm_tests/airflow_aux/test_pod_template_file.py | 2 +-
helm_tests/security/test_kerberos.py | 2 +-
helm_tests/security/test_rbac.py | 6 +-
images/breeze/output-commands-hash.txt | 6 +-
images/breeze/output_k8s_deploy-airflow.svg | 50 +++++++-------
images/breeze/output_k8s_run-complete-tests.svg | 80 ++++++++++++----------
65 files changed, 338 insertions(+), 166 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e36724d581..b2c022c308 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1513,12 +1513,15 @@ jobs:
tests-kubernetes:
timeout-minutes: 240
- name: "Helm: ${{matrix.executor}} -
${{needs.build-info.outputs.kubernetes-versions-list-as-string}}"
+ name: "\
+ Helm: ${{matrix.executor}} - ${{matrix.use-standard-naming}} - \
+ ${{needs.build-info.outputs.kubernetes-versions-list-as-string}}"
runs-on: "${{needs.build-info.outputs.runs-on}}"
needs: [build-info, wait-for-prod-images]
strategy:
matrix:
executor: [KubernetesExecutor, CeleryExecutor, LocalExecutor]
+ use-standard-naming: [true, false]
fail-fast: false
env:
RUNS_ON: "${{needs.build-info.outputs.runs-on}}"
@@ -1555,12 +1558,13 @@ jobs:
PYTHON_VERSIONS: ${{
needs.build-info.outputs.python-versions-list-as-string }}
KUBERNETES_VERSIONS:
${{needs.build-info.outputs.kubernetes-versions-list-as-string}}
EXECUTOR: ${{matrix.executor}}
+ USE_STANDARD_NAMING: ${{matrix.use-standard-naming}}
VERBOSE: false
- name: Upload KinD logs on failure
${{needs.build-info.outputs.kubernetes-combos-list-as-string}}
uses: actions/upload-artifact@v3
if: failure() || cancelled()
with:
- name: kind-logs-${{matrix.executor}}
+ name: kind-logs-${{matrix.executor}}-${{matrix.use-standard-naming}}
path: /tmp/kind_logs_*
retention-days: 7
- name: >
@@ -1568,7 +1572,7 @@ jobs:
uses: actions/upload-artifact@v3
if: failure() || cancelled()
with:
- name: k8s-test-resources-${{matrix.executor}}
+ name:
k8s-test-resources-${{matrix.executor}}-${{matrix.use-standard-naming}}
path: /tmp/k8s_test_resources_*
retention-days: 7
- name: "Delete clusters just in case they are left"
diff --git a/chart/newsfragments/31066.significant.rst
b/chart/newsfragments/31066.significant.rst
new file mode 100644
index 0000000000..c2fca5fbec
--- /dev/null
+++ b/chart/newsfragments/31066.significant.rst
@@ -0,0 +1,23 @@
+Support naming customization on helm chart resources, some resources may be
renamed during upgrade
+
+This is a new opt-in switch ``useStandardNaming``, for backwards
compatibility, to leverage the standard naming convention, which allows full
use of fullnameOverride and nameOverride in all resources.
+
+Only the following resources will be renamed using default of
``useStandardNaming=false``:
+- ConfigMap {release}-airflow-config to {release}-config
+- Secret {release}-airflow-metadata to {release}-metadata
+- Secret {release}-airflow-result-backend to {release}-result-backend
+
+For existing installations, all your resources will be recreated with a new
name and helm will delete previous resources.
+
+This won't delete existing PVCs for logs used by statefulset/deployments, but
it will recreate them with brand new PVCs.
+If you do want to preserve logs history you'll need to manually copy the data
of these volumes into the new volumes after
+deployment. Depending on what storage backend/class you're using this
procedure may vary. If you don't mind starting
+with fresh logs/redis volumes, you can just delete the old pvcs that will be
names, for example:
+
+.. code-block:: bash
+
+ kubectl delete pvc -n airflow logs-gta-triggerer-0
+ kubectl delete pvc -n airflow logs-gta-worker-0
+ kubectl delete pvc -n airflow redis-db-gta-redis-0
+
+If you do not change ``useStandardNaming`` or ``fullnameOverride`` after
upgrade, you can proceed as usual and no unexpected behaviours will be
presented.
diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt
index 57e8c9da52..2e96cfa80c 100644
--- a/chart/templates/NOTES.txt
+++ b/chart/templates/NOTES.txt
@@ -98,11 +98,11 @@ Flower dashboard:
{{- else }}
You can now access your dashboard(s) by executing the following command(s) and
visiting the corresponding port at localhost in your browser:
-Airflow Webserver: kubectl port-forward svc/{{ .Release.Name }}-webserver
{{ .Values.ports.airflowUI }}:{{ .Values.ports.airflowUI }} --namespace {{
.Release.Namespace }}
+Airflow Webserver: kubectl port-forward svc/{{ include "airflow.fullname"
. }}-webserver {{ .Values.ports.airflowUI }}:{{ .Values.ports.airflowUI }}
--namespace {{ .Release.Namespace }}
{{- if .Values.flower.enabled }}
{{- if or (eq .Values.executor "CeleryExecutor") (eq .Values.executor
"CeleryKubernetesExecutor")}}
-Flower dashboard: kubectl port-forward svc/{{ .Release.Name }}-flower {{
.Values.ports.flowerUI }}:{{ .Values.ports.flowerUI }} --namespace {{
.Release.Namespace }}
+Flower dashboard: kubectl port-forward svc/{{ include "airflow.fullname"
. }}-flower {{ .Values.ports.flowerUI }}:{{ .Values.ports.flowerUI }}
--namespace {{ .Release.Namespace }}
{{- end }}
{{- end }}
diff --git a/chart/templates/_helpers.yaml b/chart/templates/_helpers.yaml
index e210222846..0269f03aa1 100644
--- a/chart/templates/_helpers.yaml
+++ b/chart/templates/_helpers.yaml
@@ -23,7 +23,22 @@ We truncate at 63 chars because some Kubernetes name fields
are limited to this
If release name contains chart name it will be used as a full name.
*/}}
{{- define "airflow.fullname" -}}
- {{- if .Values.fullnameOverride }}
+ {{- if not .Values.useStandardNaming }}
+ {{- .Release.Name }}
+ {{- else if .Values.fullnameOverride }}
+ {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+ {{- else }}
+ {{- $name := default .Chart.Name .Values.nameOverride }}
+ {{- if contains $name .Release.Name }}
+ {{- .Release.Name | trunc 63 | trimSuffix "-" }}
+ {{- else }}
+ {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+ {{- end }}
+ {{- end }}
+{{- end }}
+
+{{- define "airflow.serviceAccountName" -}}
+ {{ if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
@@ -320,7 +335,7 @@ If release name contains chart name it will be used as a
full name.
{{- end }}
{{- define "webserver_secret_key_secret" -}}
- {{- default (printf "%s-webserver-secret-key" .Release.Name)
.Values.webserverSecretKeySecretName }}
+ {{- default (printf "%s-webserver-secret-key" (include "airflow.fullname"
.)) .Values.webserverSecretKeySecretName }}
{{- end }}
{{- define "redis_password_secret" -}}
@@ -328,11 +343,11 @@ If release name contains chart name it will be used as a
full name.
{{- end }}
{{- define "airflow_metadata_secret" -}}
- {{- default (printf "%s-airflow-metadata" .Release.Name)
.Values.data.metadataSecretName }}
+ {{- default (printf "%s-metadata" (include "airflow.fullname" .))
.Values.data.metadataSecretName }}
{{- end }}
{{- define "airflow_result_backend_secret" -}}
- {{- default (printf "%s-airflow-result-backend" .Release.Name)
.Values.data.resultBackendSecretName }}
+ {{- default (printf "%s-result-backend" (include "airflow.fullname" .))
.Values.data.resultBackendSecretName }}
{{- end }}
{{- define "airflow_pod_template_file" -}}
@@ -340,31 +355,31 @@ If release name contains chart name it will be used as a
full name.
{{- end }}
{{- define "pgbouncer_config_secret" -}}
- {{- default (printf "%s-pgbouncer-config" .Release.Name)
.Values.pgbouncer.configSecretName }}
+ {{- default (printf "%s-pgbouncer-config" (include "airflow.fullname" .))
.Values.pgbouncer.configSecretName }}
{{- end }}
{{- define "pgbouncer_certificates_secret" -}}
- {{- printf "%s-pgbouncer-certificates" .Release.Name }}
+ {{- printf "%s-pgbouncer-certificates" (include "airflow.fullname" .) }}
{{- end }}
{{- define "pgbouncer_stats_secret" -}}
- {{- printf "%s-pgbouncer-stats" .Release.Name }}
+ {{- printf "%s-pgbouncer-stats" (include "airflow.fullname" .) }}
{{- end }}
{{- define "registry_secret" -}}
- {{- default (printf "%s-registry" .Release.Name) .Values.registry.secretName
}}
+ {{- default (printf "%s-registry" (include "airflow.fullname" .))
.Values.registry.secretName }}
{{- end }}
{{- define "elasticsearch_secret" -}}
- {{- default (printf "%s-elasticsearch" .Release.Name)
.Values.elasticsearch.secretName }}
+ {{- default (printf "%s-elasticsearch" (include "airflow.fullname" .))
.Values.elasticsearch.secretName }}
{{- end }}
{{- define "flower_secret" -}}
- {{- default (printf "%s-flower" .Release.Name) .Values.flower.secretName }}
+ {{- default (printf "%s-flower" (include "airflow.fullname" .))
.Values.flower.secretName }}
{{- end }}
{{- define "kerberos_keytab_secret" -}}
- {{- printf "%s-kerberos-keytab" .Release.Name }}
+ {{- printf "%s-kerberos-keytab" (include "airflow.fullname" .) }}
{{- end }}
{{- define "kerberos_ccache_path" -}}
@@ -489,7 +504,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{- end }}
{{- define "airflow_config" -}}
- {{- printf "%s-airflow-config" .Release.Name }}
+ {{- printf "%s-config" (include "airflow.fullname" .) }}
{{- end }}
{{- define "airflow_config_mount" -}}
@@ -508,7 +523,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the webserver service account to use */}}
{{- define "webserver.serviceAccountName" -}}
{{- if .Values.webserver.serviceAccount.create }}
- {{- default (printf "%s-webserver" (include "airflow.fullname" .))
.Values.webserver.serviceAccount.name }}
+ {{- default (printf "%s-webserver" (include "airflow.serviceAccountName"
.)) .Values.webserver.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.webserver.serviceAccount.name }}
{{- end }}
@@ -517,7 +532,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the redis service account to use */}}
{{- define "redis.serviceAccountName" -}}
{{- if .Values.redis.serviceAccount.create }}
- {{- default (printf "%s-redis" (include "airflow.fullname" .))
.Values.redis.serviceAccount.name }}
+ {{- default (printf "%s-redis" (include "airflow.serviceAccountName" .))
.Values.redis.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.redis.serviceAccount.name }}
{{- end }}
@@ -526,7 +541,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the flower service account to use */}}
{{- define "flower.serviceAccountName" -}}
{{- if .Values.flower.serviceAccount.create }}
- {{- default (printf "%s-flower" (include "airflow.fullname" .))
.Values.flower.serviceAccount.name }}
+ {{- default (printf "%s-flower" (include "airflow.serviceAccountName" .))
.Values.flower.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.flower.serviceAccount.name }}
{{- end }}
@@ -535,7 +550,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the scheduler service account to use */}}
{{- define "scheduler.serviceAccountName" -}}
{{- if .Values.scheduler.serviceAccount.create }}
- {{- default (printf "%s-scheduler" (include "airflow.fullname" .))
.Values.scheduler.serviceAccount.name }}
+ {{- default (printf "%s-scheduler" (include "airflow.serviceAccountName"
.)) .Values.scheduler.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.scheduler.serviceAccount.name }}
{{- end }}
@@ -544,7 +559,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the StatsD service account to use */}}
{{- define "statsd.serviceAccountName" -}}
{{- if .Values.statsd.serviceAccount.create }}
- {{- default (printf "%s-statsd" (include "airflow.fullname" .))
.Values.statsd.serviceAccount.name }}
+ {{- default (printf "%s-statsd" (include "airflow.serviceAccountName" .))
.Values.statsd.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.statsd.serviceAccount.name }}
{{- end }}
@@ -553,7 +568,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the create user job service account to use */}}
{{- define "createUserJob.serviceAccountName" -}}
{{- if .Values.createUserJob.serviceAccount.create }}
- {{- default (printf "%s-create-user-job" (include "airflow.fullname" .))
.Values.createUserJob.serviceAccount.name }}
+ {{- default (printf "%s-create-user-job" (include
"airflow.serviceAccountName" .)) .Values.createUserJob.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.createUserJob.serviceAccount.name }}
{{- end }}
@@ -562,7 +577,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the migrate database job service account to use */}}
{{- define "migrateDatabaseJob.serviceAccountName" -}}
{{- if .Values.migrateDatabaseJob.serviceAccount.create }}
- {{- default (printf "%s-migrate-database-job" (include "airflow.fullname"
.)) .Values.migrateDatabaseJob.serviceAccount.name }}
+ {{- default (printf "%s-migrate-database-job" (include
"airflow.serviceAccountName" .)) .Values.migrateDatabaseJob.serviceAccount.name
}}
{{- else }}
{{- default "default" .Values.migrateDatabaseJob.serviceAccount.name }}
{{- end }}
@@ -571,7 +586,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the worker service account to use */}}
{{- define "worker.serviceAccountName" -}}
{{- if .Values.workers.serviceAccount.create }}
- {{- default (printf "%s-worker" (include "airflow.fullname" .))
.Values.workers.serviceAccount.name }}
+ {{- default (printf "%s-worker" (include "airflow.serviceAccountName" .))
.Values.workers.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.workers.serviceAccount.name }}
{{- end }}
@@ -580,7 +595,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the triggerer service account to use */}}
{{- define "triggerer.serviceAccountName" -}}
{{- if .Values.triggerer.serviceAccount.create }}
- {{- default (printf "%s-triggerer" (include "airflow.fullname" .))
.Values.triggerer.serviceAccount.name }}
+ {{- default (printf "%s-triggerer" (include "airflow.serviceAccountName"
.)) .Values.triggerer.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.triggerer.serviceAccount.name }}
{{- end }}
@@ -589,7 +604,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the dag processor service account to use */}}
{{- define "dagProcessor.serviceAccountName" -}}
{{- if .Values.dagProcessor.serviceAccount.create }}
- {{- default (printf "%s-dag-processor" (include "airflow.fullname" .))
.Values.dagProcessor.serviceAccount.name }}
+ {{- default (printf "%s-dag-processor" (include
"airflow.serviceAccountName" .)) .Values.dagProcessor.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.dagProcessor.serviceAccount.name }}
{{- end }}
@@ -598,7 +613,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the pgbouncer service account to use */}}
{{- define "pgbouncer.serviceAccountName" -}}
{{- if .Values.pgbouncer.serviceAccount.create }}
- {{- default (printf "%s-pgbouncer" (include "airflow.fullname" .))
.Values.pgbouncer.serviceAccount.name }}
+ {{- default (printf "%s-pgbouncer" (include "airflow.serviceAccountName"
.)) .Values.pgbouncer.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.pgbouncer.serviceAccount.name }}
{{- end }}
@@ -607,7 +622,7 @@ server_tls_key_file = /etc/pgbouncer/server.key
{{/* Create the name of the cleanup service account to use */}}
{{- define "cleanup.serviceAccountName" -}}
{{- if .Values.cleanup.serviceAccount.create }}
- {{- default (printf "%s-cleanup" (include "airflow.fullname" .))
.Values.cleanup.serviceAccount.name }}
+ {{- default (printf "%s-cleanup" (include "airflow.serviceAccountName" .))
.Values.cleanup.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.cleanup.serviceAccount.name }}
{{- end }}
diff --git a/chart/templates/cleanup/cleanup-cronjob.yaml
b/chart/templates/cleanup/cleanup-cronjob.yaml
index 57cfdf7be4..9a70cc5e08 100644
--- a/chart/templates/cleanup/cleanup-cronjob.yaml
+++ b/chart/templates/cleanup/cleanup-cronjob.yaml
@@ -29,7 +29,7 @@
apiVersion: batch/v1
kind: CronJob
metadata:
- name: {{ .Release.Name }}-cleanup
+ name: {{ include "airflow.fullname" . }}-cleanup
labels:
tier: airflow
component: airflow-cleanup-pods
diff --git a/chart/templates/configmaps/statsd-configmap.yaml
b/chart/templates/configmaps/statsd-configmap.yaml
index 31a909192f..c195109673 100644
--- a/chart/templates/configmaps/statsd-configmap.yaml
+++ b/chart/templates/configmaps/statsd-configmap.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
- name: {{ .Release.Name }}-statsd
+ name: {{ include "airflow.fullname" . }}-statsd
labels:
tier: airflow
component: config
diff --git a/chart/templates/dag-processor/dag-processor-deployment.yaml
b/chart/templates/dag-processor/dag-processor-deployment.yaml
index e748e9dff4..efecfbca43 100644
--- a/chart/templates/dag-processor/dag-processor-deployment.yaml
+++ b/chart/templates/dag-processor/dag-processor-deployment.yaml
@@ -32,7 +32,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ .Release.Name }}-dag-processor
+ name: {{ include "airflow.fullname" . }}-dag-processor
labels:
tier: airflow
component: dag-processor
diff --git a/chart/templates/flower/flower-deployment.yaml
b/chart/templates/flower/flower-deployment.yaml
index 199d9010d3..7ccfade2c5 100644
--- a/chart/templates/flower/flower-deployment.yaml
+++ b/chart/templates/flower/flower-deployment.yaml
@@ -32,7 +32,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ .Release.Name }}-flower
+ name: {{ include "airflow.fullname" . }}-flower
labels:
tier: airflow
component: flower
diff --git a/chart/templates/flower/flower-ingress.yaml
b/chart/templates/flower/flower-ingress.yaml
index 3ced2025c9..7c798ad9fb 100644
--- a/chart/templates/flower/flower-ingress.yaml
+++ b/chart/templates/flower/flower-ingress.yaml
@@ -25,7 +25,7 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
- name: {{ .Release.Name }}-flower-ingress
+ name: {{ include "airflow.fullname" . }}-flower-ingress
labels:
tier: airflow
component: flower-ingress
diff --git a/chart/templates/flower/flower-networkpolicy.yaml
b/chart/templates/flower/flower-networkpolicy.yaml
index 1133e77fa2..b0f9db8b09 100644
--- a/chart/templates/flower/flower-networkpolicy.yaml
+++ b/chart/templates/flower/flower-networkpolicy.yaml
@@ -27,7 +27,7 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
- name: {{ .Release.Name }}-flower-policy
+ name: {{ include "airflow.fullname" . }}-flower-policy
labels:
tier: airflow
component: airflow-flower-policy
diff --git a/chart/templates/flower/flower-service.yaml
b/chart/templates/flower/flower-service.yaml
index 695779b896..0847ff6274 100644
--- a/chart/templates/flower/flower-service.yaml
+++ b/chart/templates/flower/flower-service.yaml
@@ -25,7 +25,7 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ .Release.Name }}-flower
+ name: {{ include "airflow.fullname" . }}-flower
labels:
tier: airflow
component: flower
diff --git a/chart/templates/jobs/create-user-job.yaml
b/chart/templates/jobs/create-user-job.yaml
index 94d0970ae4..737e7cce70 100644
--- a/chart/templates/jobs/create-user-job.yaml
+++ b/chart/templates/jobs/create-user-job.yaml
@@ -30,7 +30,7 @@
apiVersion: batch/v1
kind: Job
metadata:
- name: {{ .Release.Name }}-create-user
+ name: {{ include "airflow.fullname" . }}-create-user
labels:
tier: airflow
component: create-user-job
diff --git a/chart/templates/jobs/migrate-database-job.yaml
b/chart/templates/jobs/migrate-database-job.yaml
index 30dda11b5b..d76f6f2ea0 100644
--- a/chart/templates/jobs/migrate-database-job.yaml
+++ b/chart/templates/jobs/migrate-database-job.yaml
@@ -30,7 +30,7 @@
apiVersion: batch/v1
kind: Job
metadata:
- name: {{ .Release.Name }}-run-airflow-migrations
+ name: {{ include "airflow.fullname" . }}-run-airflow-migrations
labels:
tier: airflow
component: run-airflow-migrations
diff --git a/chart/templates/pgbouncer/pgbouncer-deployment.yaml
b/chart/templates/pgbouncer/pgbouncer-deployment.yaml
index 14665692fc..8b6ae051da 100644
--- a/chart/templates/pgbouncer/pgbouncer-deployment.yaml
+++ b/chart/templates/pgbouncer/pgbouncer-deployment.yaml
@@ -32,7 +32,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ .Release.Name }}-pgbouncer
+ name: {{ include "airflow.fullname" . }}-pgbouncer
labels:
tier: airflow
component: pgbouncer
diff --git a/chart/templates/pgbouncer/pgbouncer-networkpolicy.yaml
b/chart/templates/pgbouncer/pgbouncer-networkpolicy.yaml
index f61aa9ed37..f79c3bb423 100644
--- a/chart/templates/pgbouncer/pgbouncer-networkpolicy.yaml
+++ b/chart/templates/pgbouncer/pgbouncer-networkpolicy.yaml
@@ -24,7 +24,7 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
- name: {{ .Release.Name }}-pgbouncer-policy
+ name: {{ include "airflow.fullname" . }}-pgbouncer-policy
labels:
tier: airflow
component: airflow-pgbouncer-policy
diff --git a/chart/templates/pgbouncer/pgbouncer-poddisruptionbudget.yaml
b/chart/templates/pgbouncer/pgbouncer-poddisruptionbudget.yaml
index 73a9c7c6f9..964438cf2c 100644
--- a/chart/templates/pgbouncer/pgbouncer-poddisruptionbudget.yaml
+++ b/chart/templates/pgbouncer/pgbouncer-poddisruptionbudget.yaml
@@ -24,7 +24,7 @@
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
- name: {{ .Release.Name }}-pgbouncer-pdb
+ name: {{ include "airflow.fullname" . }}-pgbouncer-pdb
labels:
tier: airflow
component: pgbouncer
diff --git a/chart/templates/pgbouncer/pgbouncer-service.yaml
b/chart/templates/pgbouncer/pgbouncer-service.yaml
index 7d98cf4fb9..c93dce8aee 100644
--- a/chart/templates/pgbouncer/pgbouncer-service.yaml
+++ b/chart/templates/pgbouncer/pgbouncer-service.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ .Release.Name }}-pgbouncer
+ name: {{ include "airflow.fullname" . }}-pgbouncer
labels:
tier: airflow
component: pgbouncer
diff --git a/chart/templates/rbac/pod-cleanup-role.yaml
b/chart/templates/rbac/pod-cleanup-role.yaml
index 2fc3986383..af73df6f61 100644
--- a/chart/templates/rbac/pod-cleanup-role.yaml
+++ b/chart/templates/rbac/pod-cleanup-role.yaml
@@ -24,7 +24,7 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
- name: {{ .Release.Name }}-cleanup-role
+ name: {{ include "airflow.fullname" . }}-cleanup-role
labels:
tier: airflow
release: {{ .Release.Name }}
diff --git a/chart/templates/rbac/pod-cleanup-rolebinding.yaml
b/chart/templates/rbac/pod-cleanup-rolebinding.yaml
index 9a85750ad4..8d927fb5b8 100644
--- a/chart/templates/rbac/pod-cleanup-rolebinding.yaml
+++ b/chart/templates/rbac/pod-cleanup-rolebinding.yaml
@@ -24,7 +24,7 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
- name: {{ .Release.Name }}-cleanup-rolebinding
+ name: {{ include "airflow.fullname" . }}-cleanup-rolebinding
labels:
tier: airflow
release: {{ .Release.Name }}
@@ -36,7 +36,7 @@ metadata:
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
- name: {{ .Release.Name }}-cleanup-role
+ name: {{ include "airflow.fullname" . }}-cleanup-role
subjects:
- kind: ServiceAccount
name: {{ include "cleanup.serviceAccountName" . }}
diff --git a/chart/templates/rbac/pod-launcher-role.yaml
b/chart/templates/rbac/pod-launcher-role.yaml
index 42b6013aff..271394db07 100644
--- a/chart/templates/rbac/pod-launcher-role.yaml
+++ b/chart/templates/rbac/pod-launcher-role.yaml
@@ -28,7 +28,7 @@ kind: ClusterRole
kind: Role
{{- end }}
metadata:
- name: {{ .Release.Name }}-pod-launcher-role
+ name: {{ include "airflow.fullname" . }}-pod-launcher-role
{{- if not .Values.multiNamespaceMode }}
namespace: "{{ .Release.Namespace }}"
{{- end }}
diff --git a/chart/templates/rbac/pod-launcher-rolebinding.yaml
b/chart/templates/rbac/pod-launcher-rolebinding.yaml
index fc269f78a5..60705c8993 100644
--- a/chart/templates/rbac/pod-launcher-rolebinding.yaml
+++ b/chart/templates/rbac/pod-launcher-rolebinding.yaml
@@ -33,7 +33,7 @@ metadata:
{{- if not .Values.multiNamespaceMode }}
namespace: "{{ .Release.Namespace }}"
{{- end }}
- name: {{ .Release.Name }}-pod-launcher-rolebinding
+ name: {{ include "airflow.fullname" . }}-pod-launcher-rolebinding
labels:
tier: airflow
release: {{ .Release.Name }}
@@ -49,7 +49,7 @@ roleRef:
{{- else }}
kind: Role
{{- end }}
- name: {{ .Release.Name }}-pod-launcher-role
+ name: {{ include "airflow.fullname" . }}-pod-launcher-role
subjects:
{{- if has .Values.executor $schedulerLaunchExecutors }}
- kind: ServiceAccount
diff --git a/chart/templates/rbac/pod-log-reader-role.yaml
b/chart/templates/rbac/pod-log-reader-role.yaml
index 93fabc71a4..d048d36fa2 100644
--- a/chart/templates/rbac/pod-log-reader-role.yaml
+++ b/chart/templates/rbac/pod-log-reader-role.yaml
@@ -28,7 +28,7 @@ kind: ClusterRole
kind: Role
{{- end }}
metadata:
- name: {{ .Release.Name }}-pod-log-reader-role
+ name: {{ include "airflow.fullname" . }}-pod-log-reader-role
{{- if not .Values.multiNamespaceMode }}
namespace: "{{ .Release.Namespace }}"
{{- end }}
diff --git a/chart/templates/rbac/pod-log-reader-rolebinding.yaml
b/chart/templates/rbac/pod-log-reader-rolebinding.yaml
index 7811017421..e441f9af85 100644
--- a/chart/templates/rbac/pod-log-reader-rolebinding.yaml
+++ b/chart/templates/rbac/pod-log-reader-rolebinding.yaml
@@ -31,7 +31,7 @@ metadata:
{{- if not .Values.multiNamespaceMode }}
namespace: "{{ .Release.Namespace }}"
{{- end }}
- name: {{ .Release.Name }}-pod-log-reader-rolebinding
+ name: {{ include "airflow.fullname" . }}-pod-log-reader-rolebinding
labels:
tier: airflow
release: {{ .Release.Name }}
@@ -47,7 +47,7 @@ roleRef:
{{- else }}
kind: Role
{{- end }}
- name: {{ .Release.Name }}-pod-log-reader-role
+ name: {{ include "airflow.fullname" . }}-pod-log-reader-role
subjects:
{{- if .Values.webserver.allowPodLogReading }}
- kind: ServiceAccount
diff --git a/chart/templates/rbac/security-context-constraint-rolebinding.yaml
b/chart/templates/rbac/security-context-constraint-rolebinding.yaml
index 9c6eff3c07..070a8e8169 100644
--- a/chart/templates/rbac/security-context-constraint-rolebinding.yaml
+++ b/chart/templates/rbac/security-context-constraint-rolebinding.yaml
@@ -32,7 +32,7 @@ metadata:
{{- if not .Values.multiNamespaceMode }}
namespace: "{{ .Release.Namespace }}"
{{- end }}
- name: {{ .Release.Name }}-scc-rolebinding
+ name: {{ include "airflow.fullname" . }}-scc-rolebinding
labels:
tier: airflow
release: {{ .Release.Name }}
diff --git a/chart/templates/redis/redis-networkpolicy.yaml
b/chart/templates/redis/redis-networkpolicy.yaml
index 9f6f1c1c26..457d183099 100644
--- a/chart/templates/redis/redis-networkpolicy.yaml
+++ b/chart/templates/redis/redis-networkpolicy.yaml
@@ -24,7 +24,7 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
- name: {{ .Release.Name }}-redis-policy
+ name: {{ include "airflow.fullname" . }}-redis-policy
labels:
tier: airflow
component: redis-policy
diff --git a/chart/templates/redis/redis-service.yaml
b/chart/templates/redis/redis-service.yaml
index af857a5186..17d4c8d5e4 100644
--- a/chart/templates/redis/redis-service.yaml
+++ b/chart/templates/redis/redis-service.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ .Release.Name }}-redis
+ name: {{ include "airflow.fullname" . }}-redis
labels:
tier: airflow
component: redis
diff --git a/chart/templates/redis/redis-statefulset.yaml
b/chart/templates/redis/redis-statefulset.yaml
index ec544cc6f2..810196602f 100644
--- a/chart/templates/redis/redis-statefulset.yaml
+++ b/chart/templates/redis/redis-statefulset.yaml
@@ -30,7 +30,7 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
- name: {{ .Release.Name }}-redis
+ name: {{ include "airflow.fullname" . }}-redis
labels:
tier: airflow
component: redis
@@ -41,7 +41,7 @@ metadata:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
- serviceName: {{ .Release.Name }}-redis
+ serviceName: {{ include "airflow.fullname" . }}-redis
selector:
matchLabels:
tier: airflow
diff --git a/chart/templates/scheduler/scheduler-deployment.yaml
b/chart/templates/scheduler/scheduler-deployment.yaml
index 60e4101618..88c0a842d6 100644
--- a/chart/templates/scheduler/scheduler-deployment.yaml
+++ b/chart/templates/scheduler/scheduler-deployment.yaml
@@ -44,7 +44,7 @@
apiVersion: apps/v1
kind: {{ if $stateful }}StatefulSet{{ else }}Deployment{{ end }}
metadata:
- name: {{ .Release.Name }}-scheduler
+ name: {{ include "airflow.fullname" . }}-scheduler
labels:
tier: airflow
component: scheduler
@@ -60,7 +60,7 @@ metadata:
{{- end }}
spec:
{{- if $stateful }}
- serviceName: {{ .Release.Name }}-scheduler
+ serviceName: {{ include "airflow.fullname" . }}-scheduler
{{- end }}
replicas: {{ .Values.scheduler.replicas }}
{{- if $revisionHistoryLimit }}
diff --git a/chart/templates/scheduler/scheduler-networkpolicy.yaml
b/chart/templates/scheduler/scheduler-networkpolicy.yaml
index 3f33e443bf..bbd985371e 100644
--- a/chart/templates/scheduler/scheduler-networkpolicy.yaml
+++ b/chart/templates/scheduler/scheduler-networkpolicy.yaml
@@ -24,7 +24,7 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
- name: {{ .Release.Name }}-scheduler-policy
+ name: {{ include "airflow.fullname" . }}-scheduler-policy
labels:
tier: airflow
component: airflow-scheduler-policy
diff --git a/chart/templates/scheduler/scheduler-poddisruptionbudget.yaml
b/chart/templates/scheduler/scheduler-poddisruptionbudget.yaml
index b81ea19945..3c6d7983b1 100644
--- a/chart/templates/scheduler/scheduler-poddisruptionbudget.yaml
+++ b/chart/templates/scheduler/scheduler-poddisruptionbudget.yaml
@@ -24,7 +24,7 @@
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
- name: {{ .Release.Name }}-scheduler-pdb
+ name: {{ include "airflow.fullname" . }}-scheduler-pdb
labels:
tier: airflow
component: scheduler
diff --git a/chart/templates/scheduler/scheduler-service.yaml
b/chart/templates/scheduler/scheduler-service.yaml
index 761dc931b0..b2bf2a87db 100644
--- a/chart/templates/scheduler/scheduler-service.yaml
+++ b/chart/templates/scheduler/scheduler-service.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ .Release.Name }}-scheduler
+ name: {{ include "airflow.fullname" . }}-scheduler
labels:
tier: airflow
component: scheduler
diff --git a/chart/templates/secrets/elasticsearch-secret.yaml
b/chart/templates/secrets/elasticsearch-secret.yaml
index e8b1f79484..aea70f7af9 100644
--- a/chart/templates/secrets/elasticsearch-secret.yaml
+++ b/chart/templates/secrets/elasticsearch-secret.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: Secret
metadata:
- name: {{ .Release.Name }}-elasticsearch
+ name: {{ include "airflow.fullname" . }}-elasticsearch
labels:
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}
diff --git a/chart/templates/secrets/flower-secret.yaml
b/chart/templates/secrets/flower-secret.yaml
index 8bcfb7631b..c28fa17a7d 100644
--- a/chart/templates/secrets/flower-secret.yaml
+++ b/chart/templates/secrets/flower-secret.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: Secret
metadata:
- name: {{ .Release.Name }}-flower
+ name: {{ include "airflow.fullname" . }}-flower
labels:
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}
diff --git a/chart/templates/secrets/metadata-connection-secret.yaml
b/chart/templates/secrets/metadata-connection-secret.yaml
index c7597cd300..7f9840f9db 100644
--- a/chart/templates/secrets/metadata-connection-secret.yaml
+++ b/chart/templates/secrets/metadata-connection-secret.yaml
@@ -31,7 +31,7 @@
apiVersion: v1
kind: Secret
metadata:
- name: {{ .Release.Name }}-airflow-metadata
+ name: {{ include "airflow.fullname" . }}-metadata
labels:
tier: airflow
release: {{ .Release.Name }}
diff --git a/chart/templates/secrets/registry-secret.yaml
b/chart/templates/secrets/registry-secret.yaml
index a89ea5ec34..19add845ac 100644
--- a/chart/templates/secrets/registry-secret.yaml
+++ b/chart/templates/secrets/registry-secret.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: Secret
metadata:
- name: {{ .Release.Name }}-registry
+ name: {{ include "airflow.fullname" . }}-registry
labels:
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}
diff --git a/chart/templates/secrets/result-backend-connection-secret.yaml
b/chart/templates/secrets/result-backend-connection-secret.yaml
index 33ecb18a4e..e89046d3dd 100644
--- a/chart/templates/secrets/result-backend-connection-secret.yaml
+++ b/chart/templates/secrets/result-backend-connection-secret.yaml
@@ -33,7 +33,7 @@
apiVersion: v1
kind: Secret
metadata:
- name: {{ .Release.Name }}-airflow-result-backend
+ name: {{ include "airflow.fullname" . }}-result-backend
labels:
tier: airflow
release: {{ .Release.Name }}
diff --git a/chart/templates/secrets/webserver-secret-key-secret.yaml
b/chart/templates/secrets/webserver-secret-key-secret.yaml
index c7f89cadf6..d7b1d5236f 100644
--- a/chart/templates/secrets/webserver-secret-key-secret.yaml
+++ b/chart/templates/secrets/webserver-secret-key-secret.yaml
@@ -25,7 +25,7 @@
apiVersion: v1
kind: Secret
metadata:
- name: {{ .Release.Name }}-webserver-secret-key
+ name: {{ include "airflow.fullname" . }}-webserver-secret-key
labels:
tier: airflow
component: webserver
diff --git a/chart/templates/statsd/statsd-deployment.yaml
b/chart/templates/statsd/statsd-deployment.yaml
index 583151331a..557bbc4f78 100644
--- a/chart/templates/statsd/statsd-deployment.yaml
+++ b/chart/templates/statsd/statsd-deployment.yaml
@@ -31,7 +31,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ .Release.Name }}-statsd
+ name: {{ include "airflow.fullname" . }}-statsd
labels:
tier: airflow
component: statsd
@@ -131,5 +131,5 @@ spec:
volumes:
- name: config
configMap:
- name: {{ .Release.Name }}-statsd
+ name: {{ include "airflow.fullname" . }}-statsd
{{- end }}
diff --git a/chart/templates/statsd/statsd-networkpolicy.yaml
b/chart/templates/statsd/statsd-networkpolicy.yaml
index b80de4a90f..3690cda897 100644
--- a/chart/templates/statsd/statsd-networkpolicy.yaml
+++ b/chart/templates/statsd/statsd-networkpolicy.yaml
@@ -24,7 +24,7 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
- name: {{ .Release.Name }}-statsd-policy
+ name: {{ include "airflow.fullname" . }}-statsd-policy
labels:
tier: airflow
component: statsd-policy
diff --git a/chart/templates/statsd/statsd-service.yaml
b/chart/templates/statsd/statsd-service.yaml
index 412acd09c5..2486264c5c 100644
--- a/chart/templates/statsd/statsd-service.yaml
+++ b/chart/templates/statsd/statsd-service.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ .Release.Name }}-statsd
+ name: {{ include "airflow.fullname" . }}-statsd
labels:
tier: airflow
component: statsd
diff --git a/chart/templates/triggerer/triggerer-deployment.yaml
b/chart/templates/triggerer/triggerer-deployment.yaml
index 3d327e944a..d30475fa2d 100644
--- a/chart/templates/triggerer/triggerer-deployment.yaml
+++ b/chart/templates/triggerer/triggerer-deployment.yaml
@@ -36,7 +36,7 @@
apiVersion: apps/v1
kind: {{ if $persistence }}StatefulSet{{ else }}Deployment{{ end }}
metadata:
- name: {{ .Release.Name }}-triggerer
+ name: {{ include "airflow.fullname" . }}-triggerer
labels:
tier: airflow
component: triggerer
diff --git a/chart/templates/triggerer/triggerer-networkpolicy.yaml
b/chart/templates/triggerer/triggerer-networkpolicy.yaml
index ef1fc3fb9c..408fb98a62 100644
--- a/chart/templates/triggerer/triggerer-networkpolicy.yaml
+++ b/chart/templates/triggerer/triggerer-networkpolicy.yaml
@@ -27,7 +27,7 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
- name: {{ .Release.Name }}-triggerer-policy
+ name: {{ include "airflow.fullname" . }}-triggerer-policy
labels:
tier: airflow
component: airflow-triggerer-policy
diff --git a/chart/templates/triggerer/triggerer-service.yaml
b/chart/templates/triggerer/triggerer-service.yaml
index eaf3a6f198..92aada711e 100644
--- a/chart/templates/triggerer/triggerer-service.yaml
+++ b/chart/templates/triggerer/triggerer-service.yaml
@@ -26,7 +26,7 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ .Release.Name }}-triggerer
+ name: {{ include "airflow.fullname" . }}-triggerer
labels:
tier: airflow
component: triggerer
diff --git a/chart/templates/webserver/webserver-deployment.yaml
b/chart/templates/webserver/webserver-deployment.yaml
index 7f326bab22..c7a82b1627 100644
--- a/chart/templates/webserver/webserver-deployment.yaml
+++ b/chart/templates/webserver/webserver-deployment.yaml
@@ -31,7 +31,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
- name: {{ .Release.Name }}-webserver
+ name: {{ include "airflow.fullname" . }}-webserver
labels:
tier: airflow
component: webserver
diff --git a/chart/templates/webserver/webserver-ingress.yaml
b/chart/templates/webserver/webserver-ingress.yaml
index 889a512d3f..451a57cbc0 100644
--- a/chart/templates/webserver/webserver-ingress.yaml
+++ b/chart/templates/webserver/webserver-ingress.yaml
@@ -21,10 +21,11 @@
## Airflow Webserver Ingress
#################################
{{- if or .Values.ingress.web.enabled .Values.ingress.enabled }}
+{{- $fullname := (include "airflow.fullname" .) }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
- name: {{ .Release.Name }}-airflow-ingress
+ name: {{ $fullname }}-ingress
labels:
tier: airflow
component: airflow-ingress
@@ -80,7 +81,7 @@ spec:
{{- end }}
- backend:
service:
- name: {{ $.Release.Name }}-webserver
+ name: {{ $fullname }}-webserver
port:
name: airflow-ui
{{- if $.Values.ingress.web.path }}
diff --git a/chart/templates/webserver/webserver-networkpolicy.yaml
b/chart/templates/webserver/webserver-networkpolicy.yaml
index 392be47c63..d0be9e3283 100644
--- a/chart/templates/webserver/webserver-networkpolicy.yaml
+++ b/chart/templates/webserver/webserver-networkpolicy.yaml
@@ -25,7 +25,7 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
- name: {{ .Release.Name }}-webserver-policy
+ name: {{ include "airflow.fullname" . }}-webserver-policy
labels:
tier: airflow
component: airflow-webserver-policy
diff --git a/chart/templates/webserver/webserver-poddisruptionbudget.yaml
b/chart/templates/webserver/webserver-poddisruptionbudget.yaml
index e3cd7c3043..840219a56e 100644
--- a/chart/templates/webserver/webserver-poddisruptionbudget.yaml
+++ b/chart/templates/webserver/webserver-poddisruptionbudget.yaml
@@ -24,7 +24,7 @@
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
- name: {{ .Release.Name }}-webserver-pdb
+ name: {{ include "airflow.fullname" . }}-webserver-pdb
labels:
tier: airflow
component: webserver
diff --git a/chart/templates/webserver/webserver-service.yaml
b/chart/templates/webserver/webserver-service.yaml
index a8ecdc3bb8..a3c49d32a5 100644
--- a/chart/templates/webserver/webserver-service.yaml
+++ b/chart/templates/webserver/webserver-service.yaml
@@ -23,7 +23,7 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ .Release.Name }}-webserver
+ name: {{ include "airflow.fullname" . }}-webserver
labels:
tier: airflow
component: webserver
diff --git a/chart/templates/workers/worker-deployment.yaml
b/chart/templates/workers/worker-deployment.yaml
index 235f3f783f..65cb8c0fa4 100644
--- a/chart/templates/workers/worker-deployment.yaml
+++ b/chart/templates/workers/worker-deployment.yaml
@@ -37,7 +37,7 @@
apiVersion: apps/v1
kind: {{ if $persistence }}StatefulSet{{ else }}Deployment{{ end }}
metadata:
- name: {{ .Release.Name }}-worker
+ name: {{ include "airflow.fullname" . }}-worker
labels:
tier: airflow
component: worker
@@ -52,7 +52,7 @@ metadata:
{{- end }}
spec:
{{- if $persistence }}
- serviceName: {{ .Release.Name }}-worker
+ serviceName: {{ include "airflow.fullname" . }}-worker
{{- end }}
{{- if not $keda }}
replicas: {{ .Values.workers.replicas }}
diff --git a/chart/templates/workers/worker-kedaautoscaler.yaml
b/chart/templates/workers/worker-kedaautoscaler.yaml
index 7ce3d519f7..f93484efd0 100644
--- a/chart/templates/workers/worker-kedaautoscaler.yaml
+++ b/chart/templates/workers/worker-kedaautoscaler.yaml
@@ -24,7 +24,7 @@
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
- name: {{ .Release.Name }}-worker
+ name: {{ include "airflow.fullname" . }}-worker
labels:
tier: airflow
component: worker-horizontalpodautoscaler
@@ -38,7 +38,7 @@ metadata:
spec:
scaleTargetRef:
kind: {{ ternary "StatefulSet" "Deployment"
.Values.workers.persistence.enabled }}
- name: {{ .Release.Name }}-worker
+ name: {{ include "airflow.fullname" . }}-worker
pollingInterval: {{ .Values.workers.keda.pollingInterval }}
cooldownPeriod: {{ .Values.workers.keda.cooldownPeriod }}
minReplicaCount: {{ .Values.workers.keda.minReplicaCount }}
diff --git a/chart/templates/workers/worker-networkpolicy.yaml
b/chart/templates/workers/worker-networkpolicy.yaml
index f0cb2ddc40..05de793114 100644
--- a/chart/templates/workers/worker-networkpolicy.yaml
+++ b/chart/templates/workers/worker-networkpolicy.yaml
@@ -24,7 +24,7 @@
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
- name: {{ .Release.Name }}-worker-policy
+ name: {{ include "airflow.fullname" . }}-worker-policy
labels:
tier: airflow
component: airflow-worker-policy
diff --git a/chart/templates/workers/worker-service.yaml
b/chart/templates/workers/worker-service.yaml
index 0344a6feb2..463f51c0bb 100644
--- a/chart/templates/workers/worker-service.yaml
+++ b/chart/templates/workers/worker-service.yaml
@@ -24,7 +24,7 @@
apiVersion: v1
kind: Service
metadata:
- name: {{ .Release.Name }}-worker
+ name: {{ include "airflow.fullname" . }}-worker
labels:
tier: airflow
component: worker
diff --git a/chart/values.schema.json b/chart/values.schema.json
index ecd8674ff4..4eaf404b38 100644
--- a/chart/values.schema.json
+++ b/chart/values.schema.json
@@ -44,6 +44,12 @@
"default": "",
"x-docsSection": null
},
+ "useStandardNaming": {
+ "description": "Use standard naming for all resources using
airflow.fullname template",
+ "type": "boolean",
+ "default": false,
+ "x-docsSection": null
+ },
"uid": {
"description": "User of airflow user.",
"type": "integer",
diff --git a/chart/values.yaml b/chart/values.yaml
index 9728eb9525..228e308059 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -25,6 +25,20 @@ fullnameOverride: ""
# Provide a name to substitute for the name of the chart
nameOverride: ""
+# Use standard naming for all resources using airflow.fullname template
+# Consider removing this later and default it to true
+# to make this chart follow standard naming conventions using the fullname
template.
+# For now this is an opt-in switch for backwards compatibility to leverage the
standard naming convention
+# and being able to use fully fullnameOverride and nameOverride in all
resources
+# For new installations - it is recommended to set it to True to follow
standard naming conventions
+# For existing installations, this will rename and redeploy your resources
with the new names. Be aware that
+# this will recreate your deployment/statefulsets along with their persistent
volume claims and data storage
+# migration may be needed to keep your old data
+#
+# Note:fernet-key,redis-password and broker-url secrets don't use this logic
yet,
+# as this may break existing installations due to how they get installed via
pre-install hook.
+useStandardNaming: false
+
# Max number of old replicasets to retain. Can be overridden by each
deployment's revisionHistoryLimit
revisionHistoryLimit: ~
diff --git a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
index b96829539a..b1b0a6fa56 100644
--- a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands.py
@@ -160,6 +160,13 @@ option_force_venv_setup = click.option(
envvar="FORCE_VENV_SETUP",
)
+option_use_standard_naming = click.option(
+ "--use-standard-naming",
+ help="Use standard naming.",
+ is_flag=True,
+ envvar="USE_STANDARD_NAMING",
+)
+
option_rebuild_base_image = click.option(
"--rebuild-base-image",
help="Rebuilds base Airflow image before building K8S image.",
@@ -946,6 +953,7 @@ def _deploy_helm_chart(
kubernetes_version: str,
output: Output | None,
executor: str,
+ use_standard_naming: bool,
extra_options: tuple[str, ...] | None = None,
) -> RunCommandResult:
cluster_name = get_kubectl_cluster_name(python=python,
kubernetes_version=kubernetes_version)
@@ -991,6 +999,8 @@ def _deploy_helm_chart(
if upgrade:
# force upgrade
helm_command.append("--force")
+ if use_standard_naming:
+ helm_command.extend(["--set", "useStandardNaming=true"])
if extra_options:
helm_command.extend(extra_options)
get_console(output=output).print(f"[info]Deploying Airflow from
{tmp_chart_path}")
@@ -1013,6 +1023,7 @@ def _deploy_airflow(
executor: str,
upgrade: bool,
wait_time_in_seconds: int,
+ use_standard_naming: bool,
extra_options: tuple[str, ...] | None = None,
) -> tuple[int, str]:
action = "Deploying" if not upgrade else "Upgrading"
@@ -1024,6 +1035,7 @@ def _deploy_airflow(
output=output,
upgrade=upgrade,
executor=executor,
+ use_standard_naming=use_standard_naming,
extra_options=extra_options,
)
if result.returncode == 0:
@@ -1061,6 +1073,7 @@ def _deploy_airflow(
@option_skip_cleanup
@option_debug_resources
@option_include_success_outputs
+@option_use_standard_naming
@option_python_versions
@option_kubernetes_versions
@option_verbose
@@ -1077,6 +1090,7 @@ def deploy_airflow(
skip_cleanup: bool,
debug_resources: bool,
include_success_outputs: bool,
+ use_standard_naming: bool,
python_versions: str,
kubernetes_versions: str,
extra_options: tuple[str, ...],
@@ -1104,6 +1118,7 @@ def deploy_airflow(
"kubernetes_version": combo.kubernetes_version,
"executor": executor,
"upgrade": upgrade,
+ "use_standard_naming": use_standard_naming,
"wait_time_in_seconds": wait_time_in_seconds,
"extra_options": extra_options,
"output": outputs[index],
@@ -1125,6 +1140,7 @@ def deploy_airflow(
output=None,
executor=executor,
upgrade=upgrade,
+ use_standard_naming=use_standard_naming,
wait_time_in_seconds=wait_time_in_seconds,
extra_options=extra_options,
)
@@ -1410,6 +1426,7 @@ def _run_complete_tests(
upgrade: bool,
wait_time_in_seconds: int,
force_recreate_cluster: bool,
+ use_standard_naming: bool,
num_tries: int,
extra_options: tuple[str, ...] | None,
test_args: tuple[str, ...],
@@ -1467,6 +1484,7 @@ def _run_complete_tests(
output=output,
executor=executor,
upgrade=False,
+ use_standard_naming=use_standard_naming,
wait_time_in_seconds=wait_time_in_seconds,
extra_options=extra_options,
)
@@ -1496,6 +1514,7 @@ def _run_complete_tests(
output=output,
executor=executor,
upgrade=True,
+ use_standard_naming=use_standard_naming,
wait_time_in_seconds=wait_time_in_seconds,
extra_options=extra_options,
)
@@ -1543,6 +1562,7 @@ def _run_complete_tests(
@option_skip_cleanup
@option_debug_resources
@option_include_success_outputs
+@option_use_standard_naming
@option_python_versions
@option_kubernetes_versions
@option_verbose
@@ -1563,6 +1583,7 @@ def run_complete_tests(
skip_cleanup: bool,
debug_resources: bool,
include_success_outputs: bool,
+ use_standard_naming: bool,
python_versions: str,
kubernetes_versions: str,
test_args: tuple[str, ...],
@@ -1598,6 +1619,7 @@ def run_complete_tests(
"upgrade": upgrade,
"wait_time_in_seconds": wait_time_in_seconds,
"force_recreate_cluster": force_recreate_cluster,
+ "use_standard_naming": use_standard_naming,
"num_tries": 3, # when creating cluster in
parallel, sometimes we need to retry
"extra_options": None,
"test_args": pytest_args,
@@ -1623,6 +1645,7 @@ def run_complete_tests(
upgrade=upgrade,
wait_time_in_seconds=wait_time_in_seconds,
force_recreate_cluster=force_recreate_cluster,
+ use_standard_naming=use_standard_naming,
num_tries=1,
extra_options=None,
test_args=test_args,
diff --git
a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands_config.py
b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands_config.py
index a5fb0039fe..5049100c59 100644
--- a/dev/breeze/src/airflow_breeze/commands/kubernetes_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/kubernetes_commands_config.py
@@ -159,6 +159,7 @@ KUBERNETES_PARAMETERS: dict[str, list[dict[str, str |
list[str]]]] = {
"--executor",
"--upgrade",
"--wait-time-in-seconds",
+ "--use-standard-naming",
],
},
{
@@ -222,6 +223,7 @@ KUBERNETES_PARAMETERS: dict[str, list[dict[str, str |
list[str]]]] = {
"options": [
"--upgrade",
"--wait-time-in-seconds",
+ "--use-standard-naming",
],
},
{
diff --git a/docs/helm-chart/index.rst b/docs/helm-chart/index.rst
index 616185aa1f..d1060139bd 100644
--- a/docs/helm-chart/index.rst
+++ b/docs/helm-chart/index.rst
@@ -155,3 +155,31 @@ To run database migrations with Argo CD automatically, you
will need to add:
This will run database migrations every time there is a ``Sync`` event in Argo
CD. While it is not ideal to run the migrations on every sync, it is a
trade-off that allows them to be run automatically.
If you use the Celery(Kubernetes)Executor with the built-in Redis, it is
recommended that you set up a static Redis password either by supplying
``redis.passwordSecretName`` and ``redis.data.brokerUrlSecretName`` or
``redis.password``.
+
+
+Naming Conventions
+------------------
+
+For new installations it is highly recommended to start using standard naming
conventions.
+It is not enabled by default as this may cause unexpected behaviours on
existing installations. However you can enable it using ``useStandardNaming``:
+
+.. code-block:: yaml
+
+ useStandardNaming: true
+
+For existing installations, all your resources will be recreated with a new
name and helm will delete previous resources.
+
+This won't delete existing PVCs for logs used by StatefulSets/Deployments, but
it will recreate them with brand new PVCs.
+If you do want to preserve logs history you'll need to manually copy the data
of these volumes into the new volumes after
+deployment. Depending on what storage backend/class you're using this
procedure may vary. If you don't mind starting
+with fresh logs/redis volumes, you can just delete the old persistent volume
claims, for example:
+
+.. code-block:: bash
+
+ kubectl delete pvc -n airflow logs-gta-triggerer-0
+ kubectl delete pvc -n airflow logs-gta-worker-0
+ kubectl delete pvc -n airflow redis-db-gta-redis-0
+
+.. note::
+
+ If you do not change ``useStandardNaming`` or ``fullnameOverride`` after
upgrade, you can proceed as usual and no unexpected behaviours will be
presented.
diff --git a/helm_tests/airflow_aux/test_basic_helm_chart.py
b/helm_tests/airflow_aux/test_basic_helm_chart.py
index 7aeea3eac0..7eb786d39b 100644
--- a/helm_tests/airflow_aux/test_basic_helm_chart.py
+++ b/helm_tests/airflow_aux/test_basic_helm_chart.py
@@ -71,13 +71,13 @@ class TestBaseChartTest:
("ServiceAccount", "test-basic-triggerer"),
("ServiceAccount", "test-basic-webserver"),
("ServiceAccount", "test-basic-worker"),
- ("Secret", "test-basic-airflow-metadata"),
+ ("Secret", "test-basic-metadata"),
("Secret", "test-basic-broker-url"),
("Secret", "test-basic-fernet-key"),
("Secret", "test-basic-webserver-secret-key"),
("Secret", "test-basic-postgresql"),
("Secret", "test-basic-redis-password"),
- ("ConfigMap", "test-basic-airflow-config"),
+ ("ConfigMap", "test-basic-config"),
("ConfigMap", "test-basic-statsd"),
("Role", "test-basic-pod-launcher-role"),
("Role", "test-basic-pod-log-reader-role"),
@@ -100,7 +100,7 @@ class TestBaseChartTest:
("Job", "test-basic-run-airflow-migrations"),
}
if version == "2.3.2":
- expected.add(("Secret", "test-basic-airflow-result-backend"))
+ expected.add(("Secret", "test-basic-result-backend"))
if version == "default":
expected.add(("Service", "test-basic-triggerer"))
assert list_of_kind_names_tuples == expected
@@ -118,6 +118,54 @@ class TestBaseChartTest:
"test-label"
), f"Missing label test-label on {k8s_name}. Current labels:
{labels}"
+ def test_basic_deployments_with_standard_naming(self):
+ k8s_objects = render_chart(
+ "test-basic",
+ {"useStandardNaming": True},
+ )
+ list_of_kind_names_tuples = {
+ (k8s_object["kind"], k8s_object["metadata"]["name"]) for
k8s_object in k8s_objects
+ }
+ expected = {
+ ("ServiceAccount", "test-basic-airflow-create-user-job"),
+ ("ServiceAccount", "test-basic-airflow-migrate-database-job"),
+ ("ServiceAccount", "test-basic-airflow-redis"),
+ ("ServiceAccount", "test-basic-airflow-scheduler"),
+ ("ServiceAccount", "test-basic-airflow-statsd"),
+ ("ServiceAccount", "test-basic-airflow-triggerer"),
+ ("ServiceAccount", "test-basic-airflow-webserver"),
+ ("ServiceAccount", "test-basic-airflow-worker"),
+ ("Secret", "test-basic-airflow-metadata"),
+ ("Secret", "test-basic-broker-url"),
+ ("Secret", "test-basic-fernet-key"),
+ ("Secret", "test-basic-airflow-webserver-secret-key"),
+ ("Secret", "test-basic-redis-password"),
+ ("Secret", "test-basic-postgresql"),
+ ("ConfigMap", "test-basic-airflow-config"),
+ ("ConfigMap", "test-basic-airflow-statsd"),
+ ("Role", "test-basic-airflow-pod-launcher-role"),
+ ("Role", "test-basic-airflow-pod-log-reader-role"),
+ ("RoleBinding", "test-basic-airflow-pod-launcher-rolebinding"),
+ ("RoleBinding", "test-basic-airflow-pod-log-reader-rolebinding"),
+ ("Service", "test-basic-airflow-redis"),
+ ("Service", "test-basic-airflow-statsd"),
+ ("Service", "test-basic-airflow-triggerer"),
+ ("Service", "test-basic-airflow-webserver"),
+ ("Service", "test-basic-airflow-worker"),
+ ("Service", "test-basic-postgresql"),
+ ("Service", "test-basic-postgresql-hl"),
+ ("Deployment", "test-basic-airflow-scheduler"),
+ ("Deployment", "test-basic-airflow-statsd"),
+ ("Deployment", "test-basic-airflow-webserver"),
+ ("StatefulSet", "test-basic-airflow-redis"),
+ ("StatefulSet", "test-basic-airflow-worker"),
+ ("StatefulSet", "test-basic-airflow-triggerer"),
+ ("StatefulSet", "test-basic-postgresql"),
+ ("Job", "test-basic-airflow-create-user"),
+ ("Job", "test-basic-airflow-run-airflow-migrations"),
+ }
+ assert list_of_kind_names_tuples == expected
+
@pytest.mark.parametrize("version", ["2.3.2", "2.4.0", "default"])
def test_basic_deployment_with_standalone_dag_processor(self, version):
# Dag Processor creates two extra objects compared to the basic
deployment
@@ -150,13 +198,13 @@ class TestBaseChartTest:
("ServiceAccount", "test-basic-dag-processor"),
("ServiceAccount", "test-basic-webserver"),
("ServiceAccount", "test-basic-worker"),
- ("Secret", "test-basic-airflow-metadata"),
+ ("Secret", "test-basic-metadata"),
("Secret", "test-basic-broker-url"),
("Secret", "test-basic-fernet-key"),
("Secret", "test-basic-webserver-secret-key"),
("Secret", "test-basic-postgresql"),
("Secret", "test-basic-redis-password"),
- ("ConfigMap", "test-basic-airflow-config"),
+ ("ConfigMap", "test-basic-config"),
("ConfigMap", "test-basic-statsd"),
("Role", "test-basic-pod-launcher-role"),
("Role", "test-basic-pod-log-reader-role"),
@@ -180,7 +228,7 @@ class TestBaseChartTest:
("Job", "test-basic-run-airflow-migrations"),
}
if version == "2.3.2":
- expected.add(("Secret", "test-basic-airflow-result-backend"))
+ expected.add(("Secret", "test-basic-result-backend"))
if version == "default":
expected.add(("Service", "test-basic-triggerer"))
assert list_of_kind_names_tuples == expected
@@ -294,13 +342,13 @@ class TestBaseChartTest:
kind_names_tuples = [
(f"{release_name}-airflow-cleanup", "ServiceAccount", None),
- (f"{release_name}-airflow-config", "ConfigMap", "config"),
+ (f"{release_name}-config", "ConfigMap", "config"),
(f"{release_name}-airflow-create-user-job", "ServiceAccount",
"create-user-job"),
(f"{release_name}-airflow-flower", "ServiceAccount", "flower"),
- (f"{release_name}-airflow-metadata", "Secret", None),
+ (f"{release_name}-metadata", "Secret", None),
(f"{release_name}-airflow-migrate-database-job", "ServiceAccount",
"run-airflow-migrations"),
(f"{release_name}-airflow-pgbouncer", "ServiceAccount",
"pgbouncer"),
- (f"{release_name}-airflow-result-backend", "Secret", None),
+ (f"{release_name}-result-backend", "Secret", None),
(f"{release_name}-airflow-redis", "ServiceAccount", "redis"),
(f"{release_name}-airflow-scheduler", "ServiceAccount",
"scheduler"),
(f"{release_name}-airflow-statsd", "ServiceAccount", "statsd"),
@@ -341,7 +389,7 @@ class TestBaseChartTest:
(f"{release_name}-webserver-secret-key", "Secret", "webserver"),
(f"{release_name}-webserver", "Service", "webserver"),
(f"{release_name}-webserver-policy", "NetworkPolicy",
"airflow-webserver-policy"),
- (f"{release_name}-airflow-ingress", "Ingress", "airflow-ingress"),
+ (f"{release_name}-ingress", "Ingress", "airflow-ingress"),
(f"{release_name}-worker", "Service", "worker"),
(f"{release_name}-worker", "StatefulSet", "worker"),
(f"{release_name}-worker-policy", "NetworkPolicy",
"airflow-worker-policy"),
diff --git a/helm_tests/airflow_aux/test_cleanup_pods.py
b/helm_tests/airflow_aux/test_cleanup_pods.py
index 33e475d59f..b4f67e2fd0 100644
--- a/helm_tests/airflow_aux/test_cleanup_pods.py
+++ b/helm_tests/airflow_aux/test_cleanup_pods.py
@@ -87,7 +87,7 @@ class TestCleanupPods:
assert
jmespath.search("spec.jobTemplate.spec.template.spec.containers[0].image",
docs[0]).startswith(
"apache/airflow"
)
- assert {"name": "config", "configMap": {"name":
"release-name-airflow-config"}} in jmespath.search(
+ assert {"name": "config", "configMap": {"name":
"release-name-config"}} in jmespath.search(
"spec.jobTemplate.spec.template.spec.volumes", docs[0]
)
assert {
diff --git a/helm_tests/airflow_aux/test_pod_template_file.py
b/helm_tests/airflow_aux/test_pod_template_file.py
index 4d67b91b19..b22ee8c849 100644
--- a/helm_tests/airflow_aux/test_pod_template_file.py
+++ b/helm_tests/airflow_aux/test_pod_template_file.py
@@ -319,7 +319,7 @@ class TestPodTemplateFile:
)
assert re.search("Pod", docs[0]["kind"])
- assert {"configMap": {"name": "release-name-airflow-config"}, "name":
"config"} in jmespath.search(
+ assert {"configMap": {"name": "release-name-config"}, "name":
"config"} in jmespath.search(
"spec.volumes", docs[0]
)
assert {
diff --git a/helm_tests/security/test_kerberos.py
b/helm_tests/security/test_kerberos.py
index 278faa80c8..02c7d4e534 100644
--- a/helm_tests/security/test_kerberos.py
+++ b/helm_tests/security/test_kerberos.py
@@ -31,7 +31,7 @@ class TestKerberos:
k8s_objects = render_chart(name="no-krbros", values={"kerberos":
{"enabled": False}})
# ignore airflow config map
k8s_objects_to_consider = [
- obj for obj in k8s_objects if obj["metadata"]["name"] !=
"no-krbros-airflow-config"
+ obj for obj in k8s_objects if obj["metadata"]["name"] !=
"no-krbros-config"
]
k8s_objects_to_consider_str = json.dumps(k8s_objects_to_consider)
assert k8s_objects_to_consider_str.count("kerberos") == 1
diff --git a/helm_tests/security/test_rbac.py b/helm_tests/security/test_rbac.py
index 12ffcb73e6..c305194c9e 100644
--- a/helm_tests/security/test_rbac.py
+++ b/helm_tests/security/test_rbac.py
@@ -25,10 +25,10 @@ from tests.charts.helm_template_generator import
render_chart
DEPLOYMENT_NO_RBAC_NO_SA_KIND_NAME_TUPLES = [
("Secret", "test-rbac-postgresql"),
- ("Secret", "test-rbac-airflow-metadata"),
+ ("Secret", "test-rbac-metadata"),
("Secret", "test-rbac-pgbouncer-config"),
("Secret", "test-rbac-pgbouncer-stats"),
- ("ConfigMap", "test-rbac-airflow-config"),
+ ("ConfigMap", "test-rbac-config"),
("ConfigMap", "test-rbac-statsd"),
("Service", "test-rbac-postgresql-hl"),
("Service", "test-rbac-postgresql"),
@@ -124,7 +124,7 @@ class TestRBAC:
else:
tuples.append(("Deployment", "test-rbac-triggerer"))
if version == "2.3.2":
- tuples.append(("Secret", "test-rbac-airflow-result-backend"))
+ tuples.append(("Secret", "test-rbac-result-backend"))
return tuples
@pytest.mark.parametrize("version", ["2.3.2", "2.4.0", "default"])
diff --git a/images/breeze/output-commands-hash.txt
b/images/breeze/output-commands-hash.txt
index 0db1f5beab..09108fdc27 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -22,16 +22,16 @@ k8s:build-k8s-image:4c299179e91066626e5b4a61b06fd6c6
k8s:configure-cluster:3bd5d4614ffcd02952fadd0f61bc0cdf
k8s:create-cluster:cef6b3203035af1741d6acc87a26fe12
k8s:delete-cluster:76a40b5a9001d8a933672ae3175ad59f
-k8s:deploy-airflow:bb5f9212ad00de2f4131df2bb2beebf3
+k8s:deploy-airflow:fef15f2f5d122a1d11bb602896ff36fa
k8s:k9s:f25f0df6b0fdb2604822e0c8d5b64d06
k8s:logs:547c07e859eafcf67591952b785d381d
-k8s:run-complete-tests:0cc62d0fbea8ae35849dc84fa786c960
+k8s:run-complete-tests:7c427590c9bfd15f238cc0a53742477f
k8s:setup-env:a34e94744ca4e0592371fe55478c3d54
k8s:shell:ced753917db3d1bd89e7ea3314ac0d69
k8s:status:1529ccd444b41c4b0b5f943289957100
k8s:tests:2a1e2928faea2eddafaff94176a46690
k8s:upload-k8s-image:6b3a20cdeb692f3c3d727f6b9e68c901
-k8s:8c1e4287deb0533a74f3b302f9c574be
+k8s:c73e0ebdff75d89e35af6e324a3bc527
prod-image:build:aba06a4d6543c41b5996de0d8738b6c7
prod-image:pull:76f1f27e6119928412abecf153fce4bb
prod-image:verify:bd2b78738a7c388dbad6076c41a9f906
diff --git a/images/breeze/output_k8s_deploy-airflow.svg
b/images/breeze/output_k8s_deploy-airflow.svg
index 694ab621a7..320266faa5 100644
--- a/images/breeze/output_k8s_deploy-airflow.svg
+++ b/images/breeze/output_k8s_deploy-airflow.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 928.4"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 952.8"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-deploy-airflow-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="877.4" />
+ <rect x="0" y="0" width="1463.0" height="901.8" />
</clipPath>
<clipPath id="breeze-k8s-deploy-airflow-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -150,9 +150,12 @@
<clipPath id="breeze-k8s-deploy-airflow-line-34">
<rect x="0" y="831.1" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-deploy-airflow-line-35">
+ <rect x="0" y="855.5" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="926.4" rx="8"/><text
class="breeze-k8s-deploy-airflow-title" fill="#c5c8c6" text-anchor="middle"
x="740" y="27">Command: k8s deploy-airflow</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="950.8" rx="8"/><text
class="breeze-k8s-deploy-airflow-title" fill="#c5c8c6" text-anchor="middle"
x="740" y="27">Command: k8s deploy-airflow</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -178,26 +181,27 @@
</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="337.2"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-13)">│</text><text
class="breeze-k8s-deploy-airflow-r5" x="366" y="337.2" textLength="1000.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-13)">[default: KubernetesExecutor]                              &
[...]
</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="361.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-14)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="361.6" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-14)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="361.6" textLength="97.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-14)">-upgrade</text><text
class="breeze-k8s-deploy-airflow-r2" x="366" y="361.6" [...]
</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="386"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-15)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="386" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-15)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="386" textLength="61"
clip-path="url(#breeze-k8s-deploy-airflow-line-15)">-wait</text><text
class="breeze-k8s-deploy-airflow-r4" x="97.6" y="386" textLength=" [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="410.4"
textLength="1464"
clip-path="url(#breeze-k8s-deploy-airflow-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-deploy-airflow-r2" x="1464" y="410.4" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-16)">
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="434.8"
textLength="24.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-17)">╭─</text><text
class="breeze-k8s-deploy-airflow-r5" x="24.4" y="434.8" textLength="219.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-17)"> Parallel options </text><text
class="breeze-k8s-deploy-airflow-r5" x="244" y="434.8" textLength="1195.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-17)">─────────────────────────────────────────
[...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="459.2"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-18)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="459.2" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-18)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="459.2" textLength="48.8"
clip-path="url(#breeze-k8s-deploy-airflow-line-18)">-run</text><text
class="breeze-k8s-deploy-airflow-r4" x="85.4" y="459.2" tex [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="483.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-19)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="483.6" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-19)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="483.6" textLength="146.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-19)">-parallelism</text><text
class="breeze-k8s-deploy-airflow-r2" x="378.2" y=" [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-20)">│</text><text
class="breeze-k8s-deploy-airflow-r2" x="378.2" y="508" textLength="1061.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-20)">operations.                                  &#
[...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="532.4"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-21)">│</text><text
class="breeze-k8s-deploy-airflow-r7" x="378.2" y="532.4" textLength="1061.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-21)">(INTEGER RANGE)                                &
[...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="556.8"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-22)">│</text><text
class="breeze-k8s-deploy-airflow-r5" x="378.2" y="556.8" textLength="1061.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-22)">[default: 2; 1<=x<=4]                             &#
[...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="581.2"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-23)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="581.2" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-23)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="581.2" textLength="85.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-23)">-python</text><text
class="breeze-k8s-deploy-airflow-r4" x="122" y="581.2" t [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="605.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-24)">│</text><text
class="breeze-k8s-deploy-airflow-r5" x="378.2" y="605.6" textLength="951.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-24)">[default: 3.8 3.9 3.10 3.11]                           
[...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="630"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-25)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="630" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-25)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="630" textLength="134.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-25)">-kubernetes</text><text
class="breeze-k8s-deploy-airflow-r4" x="170.8" y="630" te [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="654.4"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-26)">│</text><text
class="breeze-k8s-deploy-airflow-r5" x="378.2" y="654.4" textLength="756.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-26)">[default: v1.24.15 v1.25.11 v1.26.6 v1.27.3]                  </text><text
class="breeze-k8s-deploy-airf [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="678.8"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-27)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="678.8" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-27)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="678.8" textLength="61"
clip-path="url(#breeze-k8s-deploy-airflow-line-27)">-skip</text><text
class="breeze-k8s-deploy-airflow-r4" x="97.6" y="678.8" text [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="703.2"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-28)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="703.2" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-28)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="703.2" textLength="73.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-28)">-debug</text><text
class="breeze-k8s-deploy-airflow-r4" x="109.8" y="703.2" [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="727.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-29)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="727.6" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-29)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="727.6" textLength="97.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-29)">-include</text><text
class="breeze-k8s-deploy-airflow-r4" x="134.2" y="727.6 [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="752"
textLength="1464"
clip-path="url(#breeze-k8s-deploy-airflow-line-30)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-deploy-airflow-r2" x="1464" y="752" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-30)">
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="776.4"
textLength="24.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-31)">╭─</text><text
class="breeze-k8s-deploy-airflow-r5" x="24.4" y="776.4" textLength="195.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-31)"> Common options </text><text
class="breeze-k8s-deploy-airflow-r5" x="219.6" y="776.4" textLength="1220"
clip-path="url(#breeze-k8s-deploy-airflow-line-31)">───────────────────────────────────────────
[...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="800.8"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-32)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="800.8" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-32)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="800.8" textLength="97.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-32)">-verbose</text><text
class="breeze-k8s-deploy-airflow-r6" x="158.6" y="800.8 [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="825.2"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-33)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="825.2" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-33)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="825.2" textLength="48.8"
clip-path="url(#breeze-k8s-deploy-airflow-line-33)">-dry</text><text
class="breeze-k8s-deploy-airflow-r4" x="85.4" y="825.2" tex [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="849.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-34)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="849.6" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-34)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="849.6" textLength="61"
clip-path="url(#breeze-k8s-deploy-airflow-line-34)">-help</text><text
class="breeze-k8s-deploy-airflow-r6" x="158.6" y="849.6" tex [...]
-</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="874"
textLength="1464"
clip-path="url(#breeze-k8s-deploy-airflow-line-35)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-deploy-airflow-r2" x="1464" y="874" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-35)">
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="410.4"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-16)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="410.4" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-16)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="410.4" textLength="48.8"
clip-path="url(#breeze-k8s-deploy-airflow-line-16)">-use</text><text
class="breeze-k8s-deploy-airflow-r4" x="85.4" y="410.4" tex [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="434.8"
textLength="1464"
clip-path="url(#breeze-k8s-deploy-airflow-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-deploy-airflow-r2" x="1464" y="434.8" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-17)">
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="459.2"
textLength="24.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-18)">╭─</text><text
class="breeze-k8s-deploy-airflow-r5" x="24.4" y="459.2" textLength="219.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-18)"> Parallel options </text><text
class="breeze-k8s-deploy-airflow-r5" x="244" y="459.2" textLength="1195.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-18)">─────────────────────────────────────────
[...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="483.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-19)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="483.6" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-19)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="483.6" textLength="48.8"
clip-path="url(#breeze-k8s-deploy-airflow-line-19)">-run</text><text
class="breeze-k8s-deploy-airflow-r4" x="85.4" y="483.6" tex [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-20)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="508" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-20)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="508" textLength="146.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-20)">-parallelism</text><text
class="breeze-k8s-deploy-airflow-r2" x="378.2" y="508" t [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="532.4"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-21)">│</text><text
class="breeze-k8s-deploy-airflow-r2" x="378.2" y="532.4" textLength="1061.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-21)">operations.                                 
[...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="556.8"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-22)">│</text><text
class="breeze-k8s-deploy-airflow-r7" x="378.2" y="556.8" textLength="1061.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-22)">(INTEGER RANGE)                                &
[...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="581.2"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-23)">│</text><text
class="breeze-k8s-deploy-airflow-r5" x="378.2" y="581.2" textLength="1061.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-23)">[default: 2; 1<=x<=4]                             &#
[...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="605.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-24)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="605.6" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-24)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="605.6" textLength="85.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-24)">-python</text><text
class="breeze-k8s-deploy-airflow-r4" x="122" y="605.6" t [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="630"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-25)">│</text><text
class="breeze-k8s-deploy-airflow-r5" x="378.2" y="630" textLength="951.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-25)">[default: 3.8 3.9 3.10 3.11]                            &#
[...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="654.4"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-26)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="654.4" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-26)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="654.4" textLength="134.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-26)">-kubernetes</text><text
class="breeze-k8s-deploy-airflow-r4" x="170.8" y="6 [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="678.8"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-27)">│</text><text
class="breeze-k8s-deploy-airflow-r5" x="378.2" y="678.8" textLength="756.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-27)">[default: v1.24.15 v1.25.11 v1.26.6 v1.27.3]                  </text><text
class="breeze-k8s-deploy-airf [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="703.2"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-28)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="703.2" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-28)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="703.2" textLength="61"
clip-path="url(#breeze-k8s-deploy-airflow-line-28)">-skip</text><text
class="breeze-k8s-deploy-airflow-r4" x="97.6" y="703.2" text [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="727.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-29)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="727.6" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-29)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="727.6" textLength="73.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-29)">-debug</text><text
class="breeze-k8s-deploy-airflow-r4" x="109.8" y="727.6" [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="752"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-30)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="752" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-30)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="752" textLength="97.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-30)">-include</text><text
class="breeze-k8s-deploy-airflow-r4" x="134.2" y="752" textLe [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="776.4"
textLength="1464"
clip-path="url(#breeze-k8s-deploy-airflow-line-31)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-deploy-airflow-r2" x="1464" y="776.4" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-31)">
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="800.8"
textLength="24.4"
clip-path="url(#breeze-k8s-deploy-airflow-line-32)">╭─</text><text
class="breeze-k8s-deploy-airflow-r5" x="24.4" y="800.8" textLength="195.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-32)"> Common options </text><text
class="breeze-k8s-deploy-airflow-r5" x="219.6" y="800.8" textLength="1220"
clip-path="url(#breeze-k8s-deploy-airflow-line-32)">───────────────────────────────────────────
[...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="825.2"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-33)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="825.2" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-33)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="825.2" textLength="97.6"
clip-path="url(#breeze-k8s-deploy-airflow-line-33)">-verbose</text><text
class="breeze-k8s-deploy-airflow-r6" x="158.6" y="825.2 [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="849.6"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-34)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="849.6" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-34)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="849.6" textLength="48.8"
clip-path="url(#breeze-k8s-deploy-airflow-line-34)">-dry</text><text
class="breeze-k8s-deploy-airflow-r4" x="85.4" y="849.6" tex [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="874"
textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-35)">│</text><text
class="breeze-k8s-deploy-airflow-r4" x="24.4" y="874" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-35)">-</text><text
class="breeze-k8s-deploy-airflow-r4" x="36.6" y="874" textLength="61"
clip-path="url(#breeze-k8s-deploy-airflow-line-35)">-help</text><text
class="breeze-k8s-deploy-airflow-r6" x="158.6" y="874" textLength= [...]
+</text><text class="breeze-k8s-deploy-airflow-r5" x="0" y="898.4"
textLength="1464"
clip-path="url(#breeze-k8s-deploy-airflow-line-36)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-deploy-airflow-r2" x="1464" y="898.4" textLength="12.2"
clip-path="url(#breeze-k8s-deploy-airflow-line-36)">
</text>
</g>
</g>
diff --git a/images/breeze/output_k8s_run-complete-tests.svg
b/images/breeze/output_k8s_run-complete-tests.svg
index 82db183c2b..d5fb6aab0a 100644
--- a/images/breeze/output_k8s_run-complete-tests.svg
+++ b/images/breeze/output_k8s_run-complete-tests.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 1196.8"
xmlns="http://www.w3.org/2000/svg">
+<svg class="rich-terminal" viewBox="0 0 1482 1221.1999999999998"
xmlns="http://www.w3.org/2000/svg">
<!-- Generated with Rich https://www.textualize.io -->
<style>
@@ -43,7 +43,7 @@
<defs>
<clipPath id="breeze-k8s-run-complete-tests-clip-terminal">
- <rect x="0" y="0" width="1463.0" height="1145.8" />
+ <rect x="0" y="0" width="1463.0" height="1170.1999999999998" />
</clipPath>
<clipPath id="breeze-k8s-run-complete-tests-line-0">
<rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -183,9 +183,12 @@
<clipPath id="breeze-k8s-run-complete-tests-line-45">
<rect x="0" y="1099.5" width="1464" height="24.65"/>
</clipPath>
+<clipPath id="breeze-k8s-run-complete-tests-line-46">
+ <rect x="0" y="1123.9" width="1464" height="24.65"/>
+ </clipPath>
</defs>
- <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1194.8" rx="8"/><text
class="breeze-k8s-run-complete-tests-title" fill="#c5c8c6" text-anchor="middle"
x="740" y="27">Command: k8s run-complete-tests</text>
+ <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1"
x="1" y="1" width="1480" height="1219.2" rx="8"/><text
class="breeze-k8s-run-complete-tests-title" fill="#c5c8c6" text-anchor="middle"
x="740" y="27">Command: k8s run-complete-tests</text>
<g transform="translate(26,22)">
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -207,41 +210,42 @@
</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="239.6"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-9)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="239.6" textLength="268.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-9)"> Airflow deploy flags </text><text
class="breeze-k8s-run-complete-tests-r5" x="292.8" y="239.6"
textLength="1146.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-9)">───────── [...]
</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="264"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-10)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="264" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-10)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="264" textLength="97.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-10)">-upgrade</text><text
class="breeze-k8s-run-complete-tests- [...]
</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="288.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-11)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="288.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-11)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="288.4" textLength="61"
clip-path="url(#breeze-k8s-run-complete-tests-line-11)">-wait</text><text
class="breeze-k8s-run-complete-tests [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="312.8"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-12)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="312.8" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-12)">
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="337.2"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-13)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="337.2" textLength="231.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-13)"> Build image flags </text><text
class="breeze-k8s-run-complete-tests-r5" x="256.2" y="337.2"
textLength="1183.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-13)">───────── [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="361.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-14)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="361.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-14)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="361.6" textLength="97.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-14)">-rebuild</text><text
class="breeze-k8s-run-complete- [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="386"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-15)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="386" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-15)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="386" textLength="73.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-15)">-image</text><text
class="breeze-k8s-run-complete-tests-r4 [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="410.4"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-16)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="410.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-16)">
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="434.8"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-17)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="434.8" textLength="207.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-17)"> K8S tests flags </text><text
class="breeze-k8s-run-complete-tests-r5" x="231.8" y="434.8"
textLength="1207.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-17)">─────────── [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="459.2"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-18)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="459.2" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-18)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="459.2" textLength="85.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-18)">-python</text><text
class="breeze-k8s-run-complete-t [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="483.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-19)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="341.6" y="483.6" textLength="732"
clip-path="url(#breeze-k8s-run-complete-tests-line-19)">[default: 3.8]                              &
[...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-20)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="508" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-20)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="508" textLength="134.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-20)">-kubernetes</text><text
class="breeze-k8s-run-complete-te [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="532.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-21)">│</text><text
class="breeze-k8s-run-complete-tests-r6" x="341.6" y="532.4" textLength="658.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-21)">(>v1.24.15< | v1.25.11 | v1.26.6 | v1.27.3)           </text><text
class="breeze-k8s-run-complete-tests-r5" [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="556.8"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-22)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="341.6" y="556.8" textLength="658.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-22)">[default: v1.24.15]                             
[...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="581.2"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-23)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="581.2" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-23)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="581.2" textLength="109.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-23)">-executor</text><text
class="breeze-k8s-run-complet [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="605.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-24)">│</text><text
class="breeze-k8s-run-complete-tests-r6" x="341.6" y="605.6"
textLength="1000.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-24)">(>KubernetesExecutor< | CeleryExecutor | LocalExecutor | CeleryKubernetesExecutor)</text><text
class="breeze-k8s-run-complete-tests-r5" x="1451.8" y="605.6" text [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="630"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-25)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="341.6" y="630" textLength="1000.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-25)">[default: KubernetesExecutor]                            
[...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="654.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-26)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="654.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-26)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="654.4" textLength="73.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-26)">-force</text><text
class="breeze-k8s-run-complete-te [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="678.8"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-27)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="678.8" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-27)">
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="703.2"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-28)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="703.2" textLength="219.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-28)"> Parallel options </text><text
class="breeze-k8s-run-complete-tests-r5" x="244" y="703.2" textLength="1195.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-28)">───────────────── [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="727.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-29)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="727.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-29)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="727.6" textLength="48.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-29)">-run</text><text
class="breeze-k8s-run-complete-test [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="752"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-30)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="752" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-30)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="752" textLength="146.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-30)">-parallelism</text><text
class="breeze-k8s-run-complete-t [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="776.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-31)">│</text><text
class="breeze-k8s-run-complete-tests-r2" x="378.2" y="776.4"
textLength="1061.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-31)">operations.                               
[...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="800.8"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-32)">│</text><text
class="breeze-k8s-run-complete-tests-r6" x="378.2" y="800.8"
textLength="1061.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-32)">(INTEGER RANGE)                             
[...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="825.2"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-33)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="378.2" y="825.2"
textLength="1061.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-33)">[default: 2; 1<=x<=4]                          
[...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="849.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-34)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="849.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-34)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="849.6" textLength="85.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-34)">-python</text><text
class="breeze-k8s-run-complete-t [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="874"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-35)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="378.2" y="874" textLength="951.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-35)">[default: 3.8 3.9 3.10 3.11]                         
[...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="898.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-36)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="898.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-36)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="898.4" textLength="134.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-36)">-kubernetes</text><text
class="breeze-k8s-run-compl [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="922.8"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-37)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="378.2" y="922.8" textLength="756.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-37)">[default: v1.24.15 v1.25.11 v1.26.6 v1.27.3]                  </text><text
class="breeze [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="947.2"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-38)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="947.2" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-38)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="947.2" textLength="61"
clip-path="url(#breeze-k8s-run-complete-tests-line-38)">-skip</text><text
class="breeze-k8s-run-complete-tests [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="971.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-39)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="971.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-39)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="971.6" textLength="73.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-39)">-debug</text><text
class="breeze-k8s-run-complete-te [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="996"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-40)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="996" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-40)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="996" textLength="97.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-40)">-include</text><text
class="breeze-k8s-run-complete-tests- [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1020.4"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-41)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="1020.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-41)">
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1044.8"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-42)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="1044.8" textLength="195.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-42)"> Common options </text><text
class="breeze-k8s-run-complete-tests-r5" x="219.6" y="1044.8"
textLength="1220"
clip-path="url(#breeze-k8s-run-complete-tests-line-42)">──────────────── [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1069.2"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-43)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1069.2" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-43)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1069.2" textLength="97.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-43)">-verbose</text><text
class="breeze-k8s-run-comple [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1093.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-44)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1093.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-44)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1093.6" textLength="48.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-44)">-dry</text><text
class="breeze-k8s-run-complete-t [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1118"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-45)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1118" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-45)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1118" textLength="61"
clip-path="url(#breeze-k8s-run-complete-tests-line-45)">-help</text><text
class="breeze-k8s-run-complete-tests-r7 [...]
-</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1142.4"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-46)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="1142.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-46)">
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="312.8"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-12)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="312.8" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-12)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="312.8" textLength="48.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-12)">-use</text><text
class="breeze-k8s-run-complete-test [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="337.2"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-13)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="337.2" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-13)">
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="361.6"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-14)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="361.6" textLength="231.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-14)"> Build image flags </text><text
class="breeze-k8s-run-complete-tests-r5" x="256.2" y="361.6"
textLength="1183.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-14)">───────── [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="386"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-15)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="386" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-15)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="386" textLength="97.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-15)">-rebuild</text><text
class="breeze-k8s-run-complete-tests- [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="410.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-16)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="410.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-16)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="410.4" textLength="73.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-16)">-image</text><text
class="breeze-k8s-run-complete-te [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="434.8"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-17)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="434.8" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-17)">
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="459.2"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-18)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="459.2" textLength="207.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-18)"> K8S tests flags </text><text
class="breeze-k8s-run-complete-tests-r5" x="231.8" y="459.2"
textLength="1207.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-18)">─────────── [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="483.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-19)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="483.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-19)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="483.6" textLength="85.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-19)">-python</text><text
class="breeze-k8s-run-complete-t [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="508"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-20)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="341.6" y="508" textLength="732"
clip-path="url(#breeze-k8s-run-complete-tests-line-20)">[default: 3.8]                               
[...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="532.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-21)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="532.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-21)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="532.4" textLength="134.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-21)">-kubernetes</text><text
class="breeze-k8s-run-compl [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="556.8"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-22)">│</text><text
class="breeze-k8s-run-complete-tests-r6" x="341.6" y="556.8" textLength="658.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-22)">(>v1.24.15< | v1.25.11 | v1.26.6 | v1.27.3)           </text><text
class="breeze-k8s-run-complete-tests-r5" [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="581.2"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-23)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="341.6" y="581.2" textLength="658.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-23)">[default: v1.24.15]                             
[...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="605.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-24)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="605.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-24)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="605.6" textLength="109.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-24)">-executor</text><text
class="breeze-k8s-run-complet [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="630"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-25)">│</text><text
class="breeze-k8s-run-complete-tests-r6" x="341.6" y="630" textLength="1000.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-25)">(>KubernetesExecutor< | CeleryExecutor | LocalExecutor | CeleryKubernetesExecutor)</text><text
class="breeze-k8s-run-complete-tests-r5" x="1451.8" y="630" textLength [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="654.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-26)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="341.6" y="654.4"
textLength="1000.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-26)">[default: KubernetesExecutor]                           &
[...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="678.8"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-27)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="678.8" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-27)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="678.8" textLength="73.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-27)">-force</text><text
class="breeze-k8s-run-complete-te [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="703.2"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-28)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="703.2" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-28)">
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="727.6"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-29)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="727.6" textLength="219.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-29)"> Parallel options </text><text
class="breeze-k8s-run-complete-tests-r5" x="244" y="727.6" textLength="1195.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-29)">───────────────── [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="752"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-30)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="752" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-30)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="752" textLength="48.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-30)">-run</text><text
class="breeze-k8s-run-complete-tests-r4" [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="776.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-31)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="776.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-31)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="776.4" textLength="146.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-31)">-parallelism</text><text
class="breeze-k8s-run-comp [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="800.8"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-32)">│</text><text
class="breeze-k8s-run-complete-tests-r2" x="378.2" y="800.8"
textLength="1061.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-32)">operations.                               
[...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="825.2"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-33)">│</text><text
class="breeze-k8s-run-complete-tests-r6" x="378.2" y="825.2"
textLength="1061.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-33)">(INTEGER RANGE)                             
[...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="849.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-34)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="378.2" y="849.6"
textLength="1061.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-34)">[default: 2; 1<=x<=4]                          
[...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="874"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-35)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="874" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-35)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="874" textLength="85.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-35)">-python</text><text
class="breeze-k8s-run-complete-tests-r [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="898.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-36)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="378.2" y="898.4" textLength="951.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-36)">[default: 3.8 3.9 3.10 3.11]                         
[...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="922.8"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-37)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="922.8" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-37)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="922.8" textLength="134.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-37)">-kubernetes</text><text
class="breeze-k8s-run-compl [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="947.2"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-38)">│</text><text
class="breeze-k8s-run-complete-tests-r5" x="378.2" y="947.2" textLength="756.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-38)">[default: v1.24.15 v1.25.11 v1.26.6 v1.27.3]                  </text><text
class="breeze [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="971.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-39)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="971.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-39)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="971.6" textLength="61"
clip-path="url(#breeze-k8s-run-complete-tests-line-39)">-skip</text><text
class="breeze-k8s-run-complete-tests [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="996"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-40)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="996" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-40)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="996" textLength="73.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-40)">-debug</text><text
class="breeze-k8s-run-complete-tests-r4 [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1020.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-41)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1020.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-41)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1020.4" textLength="97.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-41)">-include</text><text
class="breeze-k8s-run-comple [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1044.8"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-42)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="1044.8" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-42)">
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1069.2"
textLength="24.4"
clip-path="url(#breeze-k8s-run-complete-tests-line-43)">╭─</text><text
class="breeze-k8s-run-complete-tests-r5" x="24.4" y="1069.2" textLength="195.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-43)"> Common options </text><text
class="breeze-k8s-run-complete-tests-r5" x="219.6" y="1069.2"
textLength="1220"
clip-path="url(#breeze-k8s-run-complete-tests-line-43)">──────────────── [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1093.6"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-44)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1093.6" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-44)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1093.6" textLength="97.6"
clip-path="url(#breeze-k8s-run-complete-tests-line-44)">-verbose</text><text
class="breeze-k8s-run-comple [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1118"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-45)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1118" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-45)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1118" textLength="48.8"
clip-path="url(#breeze-k8s-run-complete-tests-line-45)">-dry</text><text
class="breeze-k8s-run-complete-tests-r [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1142.4"
textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-46)">│</text><text
class="breeze-k8s-run-complete-tests-r4" x="24.4" y="1142.4" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-46)">-</text><text
class="breeze-k8s-run-complete-tests-r4" x="36.6" y="1142.4" textLength="61"
clip-path="url(#breeze-k8s-run-complete-tests-line-46)">-help</text><text
class="breeze-k8s-run-complete-te [...]
+</text><text class="breeze-k8s-run-complete-tests-r5" x="0" y="1166.8"
textLength="1464"
clip-path="url(#breeze-k8s-run-complete-tests-line-47)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
class="breeze-k8s-run-complete-tests-r2" x="1464" y="1166.8" textLength="12.2"
clip-path="url(#breeze-k8s-run-complete-tests-line-47)">
</text>
</g>
</g>