- Support setting
clientAuthenticationMethodfor OIDC authentication. The value is passed through to the Flask-AppBuilder config astoken_endpoint_auth_method(#765).
- Document Helm deployed RBAC permissions and remove unnecessary permissions (#767).
- Do not use immutable Secret objects for internal secrets. Migrate existing secrets to mutable versions (#770).
- Add support for airflow 3.1.6 (#742, #757).
- Add operator versioning (#725).
- GitSync considered for v1alpha1 and v1alpha2
- Support objectOverrides using
.spec.objectOverrides. See objectOverrides concepts page for details (#726).
- Bump stackable-operator to 0.108.0, strum to 0.28, and rand to 0.10 (#752, #759).
- Gracefully shutdown all concurrent tasks by forwarding the SIGTERM signal (#741).
- Bump testing-tools to
0.3.0-stackable0.0.0-dev(#733).
- Fix "404 page not found" error for the initial object list (#756, #759).
- Default
API_WORKERSto 1 (instead of letting Airflow default to 4) to prevent crashloop and update/correct docs to reflect this (#727). - Prevent unnecessary Pod restarts when initially creating an AirflowCluster. This is achieved by applying the StatefulSet after all ConfigMaps and Secrets that it mounts (#734).
- Add a flag to determine if database initialization steps should be executed (#669).
- Add new roles for dag-processor and triggerer processes (#679).
- Added a note on webserver workers to the trouble-shooting section (#685).
- Helm: Allow Pod
priorityClassNameto be configured (#687). - Added airflow
3.0.6(#692). - Add end-of-support checker (#696).
EOS_CHECK_MODE(--eos-check-mode) to set the EoS check mode. Currently, only "offline" is supported.EOS_INTERVAL(--eos-interval) to set the interval in which the operator checks if it is EoS.EOS_DISABLED(--eos-disabled) to disable the EoS checker completely.
- Add
prometheus.io/path|port|schemeannotations to metrics service (#698).
- Bump stackable-operator to
0.100.1(#703). - Use internal secrets for secret- and jwt-keys (#686).
- Update uvicorn version and revert to default number of API workers (#690).
- Deprecate airflow
2.9.3(#691). - Deprecate airflow
2.10.5(#692).
- Don't panic on invalid authorization config. Previously, a missing OPA ConfigMap would crash the operator (#667).
- Fix OPA authorization for Airflow 3. Airflow 3 needs to be configured via env variables, the operator now does this correctly (#668).
- Allow multiple Airflows in the same namespace to use Kubernetes executors. Previously, the operator would always use the same name for the executor Pod template ConfigMap. Thus when deploying multiple Airflow instances in the same namespace, there would be a conflict over the contents of that ConfigMap (#678).
- For versions >= 3 custom logging initializes the RemoteLogIO handler to fix remote logging (#683).
- Prevent Airflow connections from breaking in combination with Airflow 3.
This was achieved by setting the
AIRFLOW__CORE__FERNET_KEYenv var (#695).
- Removed airflow
2.10.4(#692).
- Added listener support for Airflow (#604).
- Adds new telemetry CLI arguments and environment variables (#613).
- Use
--file-log-max-files(orFILE_LOG_MAX_FILES) to limit the number of log files kept. - Use
--file-log-rotation-period(orFILE_LOG_ROTATION_PERIOD) to configure the frequency of rotation. - Use
--console-log-format(orCONSOLE_LOG_FORMAT) to set the format toplain(default) orjson.
- Use
- Add support for airflow
2.10.5(#625). - Add experimental support for airflow
3.0.1(#630). - "airflow.task" logger defaults to log level 'INFO' instead of 'NOTSET' (#649).
- Add internal headless service in addition to the metrics service (#651).
- Add RBAC rule to helm template for automatic cluster domain detection (#656).
- BREAKING: Replace stackable-operator
initialize_loggingwith stackable-telemetryTracing(#601, #608, #613).- The console log level was set by
AIRFLOW_OPERATOR_LOG, and is now set byCONSOLE_LOG_LEVEL. - The file log level was set by
AIRFLOW_OPERATOR_LOG, and is now set byFILE_LOG_LEVEL. - The file log directory was set by
AIRFLOW_OPERATOR_LOG_DIRECTORY, and is now set byFILE_LOG_DIRECTORY(or via--file-log-directory <DIRECTORY>). - Replace stackable-operator
print_startup_stringwithtracing::info!with fields.
- The console log level was set by
- BREAKING: Inject the vector aggregator address into the vector config using the env var
VECTOR_AGGREGATOR_ADDRESSinstead of having the operator write it to the vector config (#600). - test: Bump to Vector 0.46.1 (#620).
- test: Bump OPA to
1.4.2(#624). - Deprecate airflow
2.10.4(#625). - Move the git-sync implementation to operator-rs (#623). The functionality should not have changed.
- BREAKING: Previously this operator would hardcode the UID and GID of the Pods being created to 1000/0, this has changed now (#636)
- The
runAsUserandrunAsGroupfields will not be set anymore by the operator - The defaults from the docker images itself will now apply, which will be different from 1000/0 going forward
- This is marked as breaking because tools and policies might exist, which require these fields to be set
- The
- Changed listener class to be role-only (#645).
- BREAKING: Bump stackable-operator to 0.94.0 and update other dependencies (#656).
- The default Kubernetes cluster domain name is now fetched from the kubelet API unless explicitly configured.
- This requires operators to have the RBAC permission to get nodes/proxy in the apiGroup "". The helm-chart takes care of this.
- The CLI argument
--kubernetes-node-nameor env variableKUBERNETES_NODE_NAMEneeds to be set. The helm-chart takes care of this.
- The operator helm-chart now grants RBAC
patchpermissions onevents.k8s.io/events, so events can be aggregated (e.g. "error happened 10 times over the last 5 minutes") (#660).
- Use
jsonfile extension for log files (#607). - Fix a bug where changes to ConfigMaps that are referenced in the AirflowCluster spec didn't trigger a reconciliation (#600).
- Allow uppercase characters in domain names (#656).
- Remove the
lastUpdateTimefield from the stacklet status (#656). - Remove role binding to legacy service accounts (#656).
- Run a
containerdebugprocess in the background of each Airflow container to collect debugging information (#557). - Aggregate emitted Kubernetes events on the CustomResources (#571).
- Add OPA support (#573).
- Add support for
2.10.4(#594).
- Default to OCI for image metadata and product image selection (#572).
- BREAKING: The field
.spec.clusterConfig.dagsGitSync[].waitchanged fromuint8to our human-readableDurationstruct. In case you have usedwait: 20before, you need to change it towait: 20s(#596). - The field
.spec.clusterConfig.dagsGitSync[].depthwas promoted fromuint8touint32to allow for more cloning depth. This is a non-breaking change as all previous values are still valid (#596).
- Remove support for
2.9.2and2.10.2(experimental) (#594).
- Fix
git-syncfunctionality in case nogitFolderis specified. ThegitFolderfield is now non-nullable, but has a default value, resulting in no breaking change (#596). - Fix configOverrides by applying after defaults (#597).
- BREAKING: Use distinct ServiceAccounts for the Stacklets, so that multiple Stacklets can be deployed in one namespace. Existing Stacklets will use the newly created ServiceAccounts after restart (#545).
- Fix OIDC endpoint construction in case the
rootPathdoes not have a trailing slash (#547).
- Allowing arbitrary python code as
EXPERIMENTAL_FILE_HEADERandEXPERIMENTAL_FILE_FOOTERinwebserver_config.py(#493). - The operator can now run on Kubernetes clusters using a non-default cluster domain.
Use the env var
KUBERNETES_CLUSTER_DOMAINor the operator Helm chart propertykubernetesClusterDomainto set a non-default cluster domain (#518). - Support for
2.9.3(#494). - Experimental Support for
2.10.2([#512]). - Add support for OpenID Connect (#524, #530)
- Reduce CRD size from
1.7MBto111KBby accepting arbitrary YAML input instead of the underlying schema for the following fields (#488):podOverridesaffinityvolumesvolumeMounts
- Deprecate
2.9.2, remove2.6.xand2.8.x(#494).
- Pass gitsync credentials through properly and use a fine-grained access token (#489).
- Failing to parse one
AirflowCluster/AuthenticationClassshould no longer cause the whole operator to stop functioning (#520).
- Bump
stackable-operatorfrom0.64.0to0.70.0(#462). - Bump
product-configfrom0.6.0to0.7.0(#462). - Bump other dependencies (#464).
- Add missing affinities for Kubernetes executors (#439).
- Remove requirement of celery configs when using kubernetes executors (#445).
- Processing of corrupted log events fixed; If errors occur, the error messages are added to the log event (#449).
- Add volumes/volumeMounts/envOverrides to gitsync containers (#456).
- Removed support for 2.7.2 and 2.7.3 (#461).
- Prevent double logging of the airflow container logs (#474).
- More CRD documentation (#354).
- Helm: support labels in values.yaml (#374).
- Support for version
2.7.3,2.8.1(#387).
operator-rs0.56.1->0.57.0(#354).- Increase resource defaults (#352).
- Use new label builders (#366).
- Use new ldap::AuthenticationClassProvider
endpoint_url()method (#366). - Support git-sync
4.2.1(#387). - Use a lightweight DAG for the getting started guide to avoid OOM issues (#401)
- Raise the default readiness and liveness probe timeouts of the webserver to 120s (#402) Also raise the memory request of the webserver from 2Gi to 3Gi.
- BREAKING: Fixed various issues in the CRD structure.
clusterConfig.credentialsSecretis now mandatory (#353). - Fixed ordering of variables written to the kubernetes executor pod template (#372).
- Fixed git-sync container running with KubernetesExecutor (#381).
- Add missing
pods/logRBAC permission for airflow. Previously this caused brief error messages in the airflow task logs (User "system:serviceaccount:default:airflow-serviceaccount" cannot get resource "pods/log" in API group "" in the namespace "default".) (#406).
- [BREAKING] Removed legacy node selector on roleGroups (#366).
- Removed support for version
2.6.1,2.7.1(#387).
- [BREAKING] Implement KubernetesExecutor (#311).
- Default stackableVersion to operator version (#312).
- Support PodDisruptionBudgets (#330).
- Added support for versions 2.6.3, 2.7.2 (#334).
- Support graceful shutdown (#343).
- [BREAKING] Consolidated
spec.clusterConfig.authenticationConfigtospec.clusterConfig.authenticationwhich now takes a vector of AuthenticationClass references (#303). vector0.26.0->0.33.0(#308, #334).operator-rs0.44.0->0.55.0(#308, #330, #334).- [BREAKING] Removed AirflowDB object, since it created some problems when reinstalling or upgrading an Airflow cluster. Instead, the initialization of the database was moved to the startup phase of each scheduler pod. To make sure the initialization does not run in parallel, the
PodManagementPolicyof the scheduler StatefulSet was set toOrderedReady. The.spec.clusterConfig.databaseInitializationoption was removed from the CRD, since it was just there to enable logging for the database initialization Job, which doesn't exist anymore ([#322]).
- BREAKING: Rename Service port name from
airflowtohttpfor consistency reasons. This change should normally not be breaking, as we only change the name, not the port. However, there might be some e.g. Ingresses that rely on the port name and need to be updated (#316). - Fix user-supplied gitsync git-config settings (#335).
- Removed support for 2.2.3, 2.2.4, 2.2.5, 2.4.1 (#334).
- Generate OLM bundle for Release 23.4.0 (#270).
- Fix LDAP tests for Openshift (#270).
- Missing CRD defaults for
status.conditionsfield (#277). - Support Airflow
2.6.1(#284). - Set explicit resources on all containers (#289)
- Operator errors out when credentialsSecret is missing (#293).
- Support podOverrides (#295).
- Increase the size limit of the log volume (#299).
- [BREAKING] Consolidated remaining top-level config options to
clusterConfig(#271). operator-rs0.40.2->0.44.0(#272, #299).- Use 0.0.0-dev product images for testing (#274)
- Use testing-tools 0.2.0 (#274)
- Added kuttl test suites (#291)
- Log aggregation added (#219).
- Deploy default and support custom affinities (#241).
- Add the ability to loads DAG via git-sync (#245).
- Cluster status conditions (#255)
- Extend cluster resources for status and cluster operation (paused, stopped) (#257)
- Added more detailed landing page for the docs (#260).
- [BREAKING] Support specifying Service type.
This enables us to later switch non-breaking to using
ListenerClassesfor the exposure of Services. This change is breaking, because - for security reasons - we default to thecluster-internalListenerClass. If you need your cluster to be accessible from outside of Kubernetes you need to setclusterConfig.listenerClasstoexternal-unstableorexternal-stable(#258). operator-rs0.31.0->0.34.0->0.39.0->0.40.2(#219) (#257) (#261).- Specified security context settings needed for OpenShift (#222).
- Fixed template parsing for OpenShift tests (#222).
- Revert openshift settings (#233).
- Support crate2nix in dev environments (#234).
- Fixed LDAP tests on Openshift (#254).
- Reorganized usage guide docs(#260).
- Set RBAC objects labels and owner (#261)
- Removed PVC-usage documentation (#245).
operator-rs0.25.2->0.27.1(#197).operator-rs0.27.1->0.30.1(#208)operator-rs0.30.1->0.31.0(#216).- Updated stackable image versions ([#193]).
- [BREAKING] Use Product image selection instead of version (#206).
spec.versionhas been replaced byspec.image.spec.statsdExporterVersionhas been removed, the statsd-exporter is now part of the images itself
- Fixed the RoleGroup
selector. It was not used before. (#208) - Refactored LDAP related code to use new
LdapAuthenticationProviderfunctionality (#216)
- Cpu and memory limits are now configurable (#167).
- Stale resources are now deleted (#174).
- Support for Airflow 2.4.1 (#179).
- Toggle podSecurityContext for Openshift/Non-Openshift test scenarios (#171)
operator-rs0.22.0->0.25.2(#174)
- OpenShift compatibility (#127)
- Include chart name when installing with a custom release name (#131, #132).
- Use correct webserver key to allow access to DAG logs from the Webserver UI (#155).
- Add LDAP readiness probe for tests (#155).
- BREAKING: Prometheus metrics enabled (#51); The
statsdExporterVersionmust be set in the cluster specification. - Reconciliation errors are now reported as Kubernetes events (#53).
- Use cli argument
watch-namespace/ env varWATCH_NAMESPACEto specify a single namespace to watch (#54). - Support for Airflow 2.2.4, 2.2.5 documented (#68,#84).
- Support for mounting DAGs via
ConfigMaporPersistentVolumeClaim(#84). - Init job replaced with an AirflowDB resource created by the operator (#89).
- Stabilize start-up by watching AirflowDB job (#104).
- Stabilize integration tests (#109).
operator-rs0.10.0->0.18.0(#53,#54,#89).- [BREAKING] Specifying the product version has been changed to adhere to ADR018 instead of just specifying the product version you will now have to add the Stackable image version as well, so
version: 3.5.8becomes (for example)version: 3.5.8-stackable0.1.0(#106)
- Fixed a bug in the namespace resolution for the Init job that resulted in it not being triggered in non-default namespaces. (#23).
- Added comments about the override of configuration properties and environment variables, and added code to pass the environment variables in the custom resource to the container, as this step was missing (#42).
- Added the initial implementation of the operator. The Init command - which takes the credentials from a secret - is required to set up the external database, and the webserver service will wait for this to be completed before declaring itself to be ready. (#1).