Skip to content

Commit fe1ccb3

Browse files
Merge branch 'main' into move-git-sync-to-operator-rs
2 parents 7a18cf2 + fb5ca0a commit fe1ccb3

26 files changed

+698
-220
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Added
66

7+
- Added listener support for Airflow ([#604]).
78
- Adds new telemetry CLI arguments and environment variables ([#613]).
89
- Use `--file-log-max-files` (or `FILE_LOG_MAX_FILES`) to limit the number of log files kept.
910
- Use `--file-log-rotation-period` (or `FILE_LOG_ROTATION_PERIOD`) to configure the frequency of rotation.
@@ -20,6 +21,7 @@
2021
- BREAKING: Inject the vector aggregator address into the vector config using the env var `VECTOR_AGGREGATOR_ADDRESS` instead
2122
of having the operator write it to the vector config ([#600]).
2223
- test: Bump to Vector 0.46.1 ([#620]).
24+
- test: Bump OPA to `1.4.2` ([#624]).
2325
- Move the git-sync implementation to operator-rs ([#623]). The functionality should not have changed.
2426

2527
### Fixed
@@ -29,11 +31,13 @@
2931

3032
[#600]: https://github.com/stackabletech/airflow-operator/pull/600
3133
[#601]: https://github.com/stackabletech/airflow-operator/pull/601
34+
[#604]: https://github.com/stackabletech/airflow-operator/pull/604
3235
[#607]: https://github.com/stackabletech/airflow-operator/pull/607
3336
[#608]: https://github.com/stackabletech/airflow-operator/pull/608
3437
[#613]: https://github.com/stackabletech/airflow-operator/pull/613
3538
[#620]: https://github.com/stackabletech/airflow-operator/pull/620
3639
[#623]: https://github.com/stackabletech/airflow-operator/pull/623
40+
[#624]: https://github.com/stackabletech/airflow-operator/pull/624
3741

3842
## [25.3.0] - 2025-03-21
3943

deploy/helm/airflow-operator/crds/crds.yaml

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -593,23 +593,6 @@ spec:
593593
default: false
594594
description: for internal use only - not for production use.
595595
type: boolean
596-
listenerClass:
597-
default: cluster-internal
598-
description: |-
599-
This field controls which type of Service the Operator creates for this AirflowCluster:
600-
601-
* cluster-internal: Use a ClusterIP service
602-
603-
* external-unstable: Use a NodePort service
604-
605-
* external-stable: Use a LoadBalancer service
606-
607-
This is a temporary solution with the goal to keep yaml manifests forward compatible. In the future, this setting will control which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) will be used to expose the service, and ListenerClass names will stay the same, allowing for a non-breaking change.
608-
enum:
609-
- cluster-internal
610-
- external-unstable
611-
- external-stable
612-
type: string
613596
loadExamples:
614597
default: false
615598
description: Whether to load example DAGs or not; defaults to false. The examples are used in the [getting started guide](https://docs.stackable.tech/home/nightly/airflow/getting_started/).
@@ -1347,6 +1330,10 @@ spec:
13471330
description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details.
13481331
nullable: true
13491332
type: string
1333+
listenerClass:
1334+
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the webserver.
1335+
nullable: true
1336+
type: string
13501337
logging:
13511338
default:
13521339
containers: {}
@@ -1564,6 +1551,10 @@ spec:
15641551
description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`. Consult the operator documentation for details.
15651552
nullable: true
15661553
type: string
1554+
listenerClass:
1555+
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose the webserver.
1556+
nullable: true
1557+
type: string
15671558
logging:
15681559
default:
15691560
containers: {}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,17 @@ rules:
8484
- customresourcedefinitions
8585
verbs:
8686
- get
87+
- apiGroups:
88+
- listeners.stackable.tech
89+
resources:
90+
- listeners
91+
verbs:
92+
- get
93+
- list
94+
- watch
95+
- patch
96+
- create
97+
- delete
8798
- apiGroups:
8899
- {{ include "operator.name" . }}.stackable.tech
89100
resources:
Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
= Service exposition with ListenerClasses
22
:description: Configure Airflow service exposure with ListenerClasses: cluster-internal, external-unstable, or external-stable.
33

4-
Airflow offers a web UI and an API, both are exposed by the webserver process under the `webserver` role.
5-
The Operator deploys a service called `<name>-webserver` (where `<name>` is the name of the AirflowCluster) through which Airflow can be reached.
6-
7-
This service can have three different types: `cluster-internal`, `external-unstable` and `external-stable`.
8-
Read more about the types in the xref:concepts:service-exposition.adoc[service exposition] documentation at platform level.
9-
10-
This is how the listener class is configured:
4+
The operator deploys a xref:listener-operator:listener.adoc[Listener] for the Webserver pod.
5+
The listener defaults to only being accessible from within the Kubernetes cluster, but this can be changed by setting `.spec.webservers.config.listenerClass`:
116

127
[source,yaml]
138
----
149
spec:
15-
clusterConfig:
16-
listenerClass: cluster-internal # <1>
10+
webservers:
11+
config:
12+
listenerClass: external-unstable # <1>
13+
schedulers:
14+
...
15+
celeryExecutors:
16+
...
1717
----
18-
<1> The default `cluster-internal` setting.
18+
<1> Specify a ListenerClass, such as `external-stable`, `external-unstable`, or `cluster-internal` (the default setting is `cluster-internal`).
19+
This can be set only for the webservers role.

nix/sources.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)