Skip to content

Commit b8bc32c

Browse files
committed
merge main
2 parents 247cf1e + d931261 commit b8bc32c

39 files changed

Lines changed: 731 additions & 432 deletions

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
This means you need to replace your simple database connection string with a typed struct.
2020
This struct is consistent between different CRDs, so that you can easily copy/paste it between stacklets.
2121
Read on the [Airflow database documentation](https://docs.stackable.tech/home/nightly/airflow/usage-guide/database-connections) for details ([#754]).
22+
- BREAKING: Renamed and moved the `celeryExecutor` broker and results backend to `clusterConfig` ([#786]).
23+
The results backend `spec.celeryExecutors.resultBackend` is now `spec.clusterConfig.celeryResultsBackend`.
24+
The broker `spec.celeryExecutors.broker` is now `spec.clusterConfig.celeryBroker`.
2225

2326
### Fixed
2427

@@ -33,6 +36,7 @@
3336
[#777]: https://github.com/stackabletech/airflow-operator/pull/777
3437
[#754]: https://github.com/stackabletech/airflow-operator/pull/754
3538
[#784]: https://github.com/stackabletech/airflow-operator/pull/784
39+
[#786]: https://github.com/stackabletech/airflow-operator/pull/786
3640

3741
## [26.3.0] - 2026-03-16
3842

Tiltfile

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,22 @@
22
meta = read_json('nix/meta.json')
33
operator_name = meta['operator']['name']
44

5-
# If tilt_options.json exists read it and load the default_registry and default_repository value from it
5+
# If tilt_options.json exists read it and load the default_registry, default_operator_repository,
6+
# and default_product_repository value from it
67
settings = read_json('tilt_options.json', default={})
78
registry = settings.get('default_registry', 'oci.stackable.tech')
8-
repository = settings.get('default_repository', registry + '/' + 'sdp')
9-
operator_image_name = repository + '/' + operator_name
109

11-
# Configure default registry either read from config file above, or with default value of "oci.stackable.tech"
10+
# Construct the operator image repository. It uses the "sandbox" instead of the "sdp" namespace to
11+
# separate "testing/local" images from official (published) images.
12+
operator_repository = settings.get('default_operator_repository', registry + '/' + 'sandbox')
13+
operator_image_name = operator_repository + '/' + operator_name
14+
15+
# For the product image, we wanna use the images in the "sdp" namespace, because "sandbox" doesn't
16+
# contain those images (by default).
17+
product_repository = settings.get('default_product_repository', registry + '/' + 'sdp')
18+
19+
# Configure default registry either read from config file above, or with default value of
20+
# "oci.stackable.tech"
1221
default_registry(registry)
1322

1423
custom_build(
@@ -31,14 +40,16 @@ k8s_kind('DaemonSet', image_json_path='{.spec.template.metadata.annotations.inte
3140
# supported by helm(set).
3241
helm_values = settings.get('helm_values', None)
3342

34-
helm_override_image_repository = 'image.repository=' + repository
43+
helm_override_operator_image_repository = 'image.repository=' + operator_repository
44+
helm_override_product_image_repository = 'image.productRepository=' + product_repository
3545

3646
k8s_yaml(helm(
3747
'deploy/helm/' + operator_name,
3848
name=operator_name,
3949
namespace="stackable-operators",
4050
set=[
41-
helm_override_image_repository,
51+
helm_override_operator_image_repository,
52+
helm_override_product_image_repository,
4253
],
4354
values=helm_values,
4455
))

deploy/helm/airflow-operator/templates/_helpers.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ helm.sh/test: {{ include "operator.chart" . }}
7979
{{- end }}
8080

8181
{{/*
82-
Build the full container image reference.
82+
Build the full operator container image reference.
8383
*/}}
8484
{{- define "operator.image" -}}
8585
{{- printf "%s/%s:%s" .Values.image.repository .Chart.Name (.Values.image.tag | default .Chart.AppVersion) -}}

deploy/helm/airflow-operator/templates/deployment.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ spec:
7070
- name: OPERATOR_SERVICE_NAME
7171
value: {{ include "operator.fullname" . }}
7272

73-
# The image repository, like "oci.stackable.tech/sdp"
73+
# The product image repository, like "oci.stackable.tech/sdp".
7474
- name: IMAGE_REPOSITORY
75-
value: {{ .Values.image.repository }}
75+
value: {{ .Values.image.productRepository | default .Values.image.repository }}
7676

7777
# Operators need to know the node name they are running on, to e.g. discover the
7878
# Kubernetes domain name from the kubelet API.

docker/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ ARG STACKABLE_USER_NAME="stackable"
3737
# "-c": Allows the execution of commands passed as a string
3838
SHELL ["/bin/bash", "-euo", "pipefail", "-c"]
3939

40-
# These labels have mostly been superceded by the OpenContainer spec annotations below but it doesn't hurt to include them
40+
# These labels have mostly been superseded by the OpenContainer spec annotations below but it doesn't hurt to include them
4141
# http://label-schema.org/rc1/
4242
LABEL name="Stackable Operator for Apache Airflow"
4343
LABEL maintainer="info@stackable.tech"

docs/modules/airflow/examples/example-airflow-incluster.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ spec:
1515
host: airflow-postgresql
1616
database: airflow
1717
credentialsSecretName: airflow-postgresql-credentials
18+
celeryResultsBackend:
19+
postgresql:
20+
host: airflow-postgresql
21+
database: airflow
22+
credentialsSecretName: airflow-postgresql-credentials
23+
celeryBroker:
24+
redis:
25+
host: airflow-redis-master
26+
credentialsSecretName: airflow-redis-credentials
1827
webservers:
1928
roleConfig:
2029
listenerClass: external-unstable
@@ -29,15 +38,6 @@ spec:
2938
envOverrides: *envOverrides
3039
replicas: 1
3140
celeryExecutors:
32-
resultBackend:
33-
postgresql:
34-
host: airflow-postgresql
35-
database: airflow
36-
credentialsSecretName: airflow-postgresql-credentials
37-
broker:
38-
redis:
39-
host: airflow-redis-master
40-
credentialsSecretName: airflow-redis-credentials
4141
roleGroups:
4242
default:
4343
envOverrides: *envOverrides

docs/modules/airflow/examples/getting_started/code/airflow.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,22 @@ spec:
1616
host: airflow-postgresql
1717
database: airflow
1818
credentialsSecretName: airflow-postgresql-credentials
19-
webservers:
20-
roleConfig:
21-
listenerClass: external-unstable
22-
roleGroups:
23-
default:
24-
replicas: 1
25-
celeryExecutors:
26-
resultBackend:
19+
celeryResultsBackend:
2720
postgresql:
2821
host: airflow-postgresql
2922
database: airflow
3023
credentialsSecretName: airflow-postgresql-credentials
31-
broker:
24+
celeryBroker:
3225
redis:
3326
host: airflow-redis-master
3427
credentialsSecretName: airflow-redis-credentials
28+
webservers:
29+
roleConfig:
30+
listenerClass: external-unstable
31+
roleGroups:
32+
default:
33+
replicas: 1
34+
celeryExecutors:
3535
roleGroups:
3636
default:
3737
replicas: 1

docs/modules/airflow/pages/usage-guide/database-connections.adoc

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,26 @@ spec:
2020
<2> A reference to a Secret which must contain the two fields `username` and `password`.
2121

2222
The queue/broker metadata and URL is only needed when running the celery executor.
23-
The `resultBackend` definition uses the same structure as `metadataDatabase` shown above.
24-
The `broker` definition requires Redis connection details.
23+
The `celeryResultsBackend` definition uses the same structure as `metadataDatabase` shown above.
24+
The `celeryBroker` definition requires Redis connection details.
2525

2626
[source,yaml]
2727
----
2828
spec:
29-
celeryExecutors:
30-
resultBackend:
29+
clusterConfig:
30+
celeryResultsBackend:
3131
postgresql: # <1>
3232
host: airflow-postgresql
3333
database: airflow
3434
credentialsSecretName: airflow-postgresql-credentials # <2>
35-
broker:
35+
celeryBroker:
3636
redis: # <3>
3737
host: airflow-redis-master
3838
credentialsSecretName: airflow-redis-credentials # <2>
39+
celeryExecutors:
40+
roleGroups:
41+
default:
42+
replicas: 1
3943
----
4044
<1> A reference to one of the supported database backends (e.g. `postgresql`).
4145
<2> A reference to a secret which must contain the two fields `username` and `password`.
@@ -57,10 +61,11 @@ spec:
5761
[source,yaml]
5862
----
5963
spec:
60-
resultBackend:
64+
clusterConfig:
65+
celeryResultsBackend:
6166
generic:
6267
connectionUrlSecretName: postgresql-celery # <2>
63-
broker:
68+
celeryBroker:
6469
generic:
6570
connectionUrlSecretName: redis-celery # <3>
6671
----

0 commit comments

Comments
 (0)