diff --git a/CHANGELOG.md b/CHANGELOG.md index 3471d3dd..62b1978c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [25.7.0-rc1] - 2025-07-18 + ### Added - Add rolling upgrade support for upgrades between NiFi 2 versions ([#771]). diff --git a/Cargo.lock b/Cargo.lock index ea63e503..4a40b645 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2589,7 +2589,7 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stackable-nifi-operator" -version = "0.0.0-dev" +version = "25.7.0-rc1" dependencies = [ "anyhow", "built", diff --git a/Cargo.nix b/Cargo.nix index 67ccdf4b..292a165b 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -8393,7 +8393,7 @@ rec { }; "stackable-nifi-operator" = rec { crateName = "stackable-nifi-operator"; - version = "0.0.0-dev"; + version = "25.7.0-rc1"; edition = "2021"; crateBin = [ { diff --git a/Cargo.toml b/Cargo.toml index 537007f3..e726655e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["rust/operator-binary"] resolver = "2" [workspace.package] -version = "0.0.0-dev" +version = "25.7.0-rc1" authors = ["Stackable GmbH "] license = "OSL-3.0" edition = "2021" diff --git a/deploy/helm/nifi-operator/Chart.yaml b/deploy/helm/nifi-operator/Chart.yaml index df0899fc..1ee52de1 100644 --- a/deploy/helm/nifi-operator/Chart.yaml +++ b/deploy/helm/nifi-operator/Chart.yaml @@ -1,8 +1,8 @@ --- apiVersion: v2 name: nifi-operator -version: "0.0.0-dev" -appVersion: "0.0.0-dev" +version: "25.7.0-rc1" +appVersion: "25.7.0-rc1" description: The Stackable Operator for Apache NiFi home: https://github.com/stackabletech/nifi-operator maintainers: diff --git a/deploy/helm/nifi-operator/crds/crds.yaml b/deploy/helm/nifi-operator/crds/crds.yaml index d2a1e2d4..8a9926e1 100644 --- a/deploy/helm/nifi-operator/crds/crds.yaml +++ b/deploy/helm/nifi-operator/crds/crds.yaml @@ -23,7 +23,7 @@ spec: description: Auto-generated derived type for NifiClusterSpec via `CustomResource` properties: spec: - description: A NiFi cluster stacklet. This resource is managed by the Stackable operator for Apache NiFi. Find more information on how to use it and the resources that the operator generates in the [operator documentation](https://docs.stackable.tech/home/nightly/nifi/). + description: A NiFi cluster stacklet. This resource is managed by the Stackable operator for Apache NiFi. Find more information on how to use it and the resources that the operator generates in the [operator documentation](https://docs.stackable.tech/home/25.7/nifi/). properties: clusterConfig: anyOf: @@ -33,11 +33,11 @@ spec: description: Settings that affect all roles and role groups. The settings in the `clusterConfig` are cluster wide settings that do not need to be configurable at role or role group level. properties: authentication: - description: Authentication options for NiFi (required). Read more about authentication in the [security documentation](https://docs.stackable.tech/home/nightly/nifi/usage_guide/security#authentication). + description: Authentication options for NiFi (required). Read more about authentication in the [security documentation](https://docs.stackable.tech/home/25.7/nifi/usage_guide/security#authentication). items: properties: authenticationClass: - description: Name of the [AuthenticationClass](https://docs.stackable.tech/home/nightly/concepts/authentication) used to authenticate users + description: Name of the [AuthenticationClass](https://docs.stackable.tech/home/25.7/concepts/authentication) used to authenticate users type: string oidc: description: This field contains OIDC-specific configuration. It is only required in case OIDC is used. @@ -60,11 +60,11 @@ spec: type: object type: array authorization: - description: Authorization options. Learn more in the [NiFi authorization usage guide](https://docs.stackable.tech/home/nightly/nifi/usage-guide/security#authorization). + description: Authorization options. Learn more in the [NiFi authorization usage guide](https://docs.stackable.tech/home/25.7/nifi/usage-guide/security#authorization). nullable: true properties: opa: - description: Configure the OPA stacklet [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery) and the name of the Rego package containing your authorization rules. Consult the [OPA authorization documentation](https://docs.stackable.tech/home/nightly/concepts/opa) to learn how to deploy Rego authorization rules with OPA. + description: Configure the OPA stacklet [discovery ConfigMap](https://docs.stackable.tech/home/25.7/concepts/service_discovery) and the name of the Rego package containing your authorization rules. Consult the [OPA authorization documentation](https://docs.stackable.tech/home/25.7/concepts/opa) to learn how to deploy Rego authorization rules with OPA. nullable: true properties: cache: @@ -85,7 +85,7 @@ spec: type: integer type: object configMapName: - description: The [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery) for the OPA stacklet that should be used for authorization requests. + description: The [discovery ConfigMap](https://docs.stackable.tech/home/25.7/concepts/service_discovery) for the OPA stacklet that should be used for authorization requests. type: string package: description: The name of the Rego package containing the Rego rules for the product. @@ -107,13 +107,13 @@ spec: type: boolean podOverrides: default: {} - description: Here you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on the Pod of the create-reporting-task Kubernetes Job. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information. + description: Here you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on the Pod of the create-reporting-task Kubernetes Job. Read the [Pod overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#pod-overrides) for more information. type: object x-kubernetes-preserve-unknown-fields: true type: object customComponentsGitSync: default: [] - description: The `customComponentsGitSync` setting allows configuring custom components to mount via `git-sync`. Learn more in the documentation for [Loading custom components](https://docs.stackable.tech/home/nightly/nifi/usage_guide/custom-components.html#git_sync). + description: The `customComponentsGitSync` setting allows configuring custom components to mount via `git-sync`. Learn more in the documentation for [Loading custom components](https://docs.stackable.tech/home/25.7/nifi/usage_guide/custom-components.html#git_sync). items: properties: branch: @@ -154,7 +154,7 @@ spec: Also read the git-sync [example] in our documentation. These settings are not verified. - [documentation]: https://github.com/kubernetes/git-sync/tree/v4.2.4?tab=readme-ov-file#manual [example]: https://docs.stackable.tech/home/nightly/airflow/usage-guide/mounting-dags#_example + [documentation]: https://github.com/kubernetes/git-sync/tree/v4.2.4?tab=readme-ov-file#manual [example]: https://docs.stackable.tech/home/25.7/airflow/usage-guide/mounting-dags#_example type: object repo: description: 'The git repository URL that will be cloned, for example: `https://github.com/stackabletech/airflow-operator`.' @@ -172,7 +172,7 @@ spec: type: object type: array extraVolumes: - description: Extra volumes similar to `.spec.volumes` on a Pod to mount into every container, this can be useful to for example make client certificates, keytabs or similar things available to processors. These volumes will be mounted into all pods at `/stackable/userdata/{volumename}`. See also the [external files usage guide](https://docs.stackable.tech/home/nightly/nifi/usage_guide/extra-volumes). + description: Extra volumes similar to `.spec.volumes` on a Pod to mount into every container, this can be useful to for example make client certificates, keytabs or similar things available to processors. These volumes will be mounted into all pods at `/stackable/userdata/{volumename}`. See also the [external files usage guide](https://docs.stackable.tech/home/25.7/nifi/usage_guide/extra-volumes). items: type: object x-kubernetes-preserve-unknown-fields: true @@ -240,12 +240,12 @@ spec: type: string type: object vectorAggregatorConfigMapName: - description: Name of the Vector aggregator [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery). It must contain the key `ADDRESS` with the address of the Vector aggregator. Follow the [logging tutorial](https://docs.stackable.tech/home/nightly/tutorials/logging-vector-aggregator) to learn how to configure log aggregation with Vector. + description: Name of the Vector aggregator [discovery ConfigMap](https://docs.stackable.tech/home/25.7/concepts/service_discovery). It must contain the key `ADDRESS` with the address of the Vector aggregator. Follow the [logging tutorial](https://docs.stackable.tech/home/25.7/tutorials/logging-vector-aggregator) to learn how to configure log aggregation with Vector. nullable: true type: string zookeeperConfigMapName: description: |- - NiFi can either use ZooKeeper or Kubernetes for managing its cluster state. To use ZooKeeper, provide the name of the ZooKeeper [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery) here. When using the [Stackable operator for Apache ZooKeeper](https://docs.stackable.tech/home/nightly/zookeeper/) to deploy a ZooKeeper cluster, this will simply be the name of your ZookeeperCluster resource. + NiFi can either use ZooKeeper or Kubernetes for managing its cluster state. To use ZooKeeper, provide the name of the ZooKeeper [discovery ConfigMap](https://docs.stackable.tech/home/25.7/concepts/service_discovery) here. When using the [Stackable operator for Apache ZooKeeper](https://docs.stackable.tech/home/25.7/zookeeper/) to deploy a ZooKeeper cluster, this will simply be the name of your ZookeeperCluster resource. The Kubernetes provider will be used if this field is unset. Kubernetes is only supported for NiFi 2.x and newer, NiFi 1.x requires ZooKeeper. type: string @@ -257,7 +257,7 @@ spec: default: reconciliationPaused: false stopped: false - description: '[Cluster operations](https://docs.stackable.tech/home/nightly/concepts/operations/cluster_operations) properties, allow stopping the product instance as well as pausing reconciliation.' + description: '[Cluster operations](https://docs.stackable.tech/home/25.7/concepts/operations/cluster_operations) properties, allow stopping the product instance as well as pausing reconciliation.' properties: reconciliationPaused: default: false @@ -278,7 +278,7 @@ spec: description: |- Specify which image to use, the easiest way is to only configure the `productVersion`. You can also configure a custom image registry to pull from, as well as completely custom images. - Consult the [Product image selection documentation](https://docs.stackable.tech/home/nightly/concepts/product_image_selection) for details. + Consult the [Product image selection documentation](https://docs.stackable.tech/home/25.7/concepts/product_image_selection) for details. properties: custom: description: Overwrite the docker image. Specify the full docker image name, e.g. `oci.stackable.tech/sdp/superset:1.4.1-stackable2.1.0` @@ -317,7 +317,7 @@ spec: type: string type: object nodes: - description: This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured on role level. There is also a second form of config, which can only be configured at role level, the `roleConfig`. You can learn more about this in the [Roles and role group concept documentation](https://docs.stackable.tech/home/nightly/concepts/roles-and-role-groups). + description: This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured on role level. There is also a second form of config, which can only be configured at role level, the `roleConfig`. You can learn more about this in the [Roles and role group concept documentation](https://docs.stackable.tech/home/25.7/concepts/roles-and-role-groups). nullable: true properties: cliOverrides: @@ -334,7 +334,7 @@ spec: nodeSelector: null podAffinity: null podAntiAffinity: null - description: These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). + description: These configuration settings control [Pod placement](https://docs.stackable.tech/home/25.7/concepts/operations/pod_placement). properties: nodeAffinity: description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node) @@ -366,7 +366,7 @@ spec: default: containers: {} enableVectorAgent: null - description: Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging). + description: Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/25.7/concepts/logging). properties: containers: additionalProperties: @@ -735,20 +735,20 @@ spec: type: string type: object default: {} - description: The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product. + description: The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product. type: object envOverrides: additionalProperties: type: string default: {} - description: '`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available.' + description: '`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available.' type: object jvmArgumentOverrides: default: add: [] remove: [] removeRegex: [] - description: Allows overriding JVM arguments. Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) for details on the usage. + description: Allows overriding JVM arguments. Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#jvm-argument-overrides) for details on the usage. properties: add: default: [] @@ -771,7 +771,7 @@ spec: type: object podOverrides: default: {} - description: In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information. + description: In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#pod-overrides) for more information. type: object x-kubernetes-preserve-unknown-fields: true roleConfig: @@ -794,7 +794,7 @@ spec: 1. If PodDisruptionBudgets are created by the operator 2. The allowed number of Pods to be unavailable (`maxUnavailable`) - Learn more in the [allowed Pod disruptions documentation](https://docs.stackable.tech/home/nightly/concepts/operations/pod_disruptions). + Learn more in the [allowed Pod disruptions documentation](https://docs.stackable.tech/home/25.7/concepts/operations/pod_disruptions). properties: enabled: default: true @@ -825,7 +825,7 @@ spec: nodeSelector: null podAffinity: null podAntiAffinity: null - description: These configuration settings control [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement). + description: These configuration settings control [Pod placement](https://docs.stackable.tech/home/25.7/concepts/operations/pod_placement). properties: nodeAffinity: description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node) @@ -857,7 +857,7 @@ spec: default: containers: {} enableVectorAgent: null - description: Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/nightly/concepts/logging). + description: Logging configuration, learn more in the [logging concept documentation](https://docs.stackable.tech/home/25.7/concepts/logging). properties: containers: additionalProperties: @@ -1226,20 +1226,20 @@ spec: type: string type: object default: {} - description: The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product. + description: The `configOverrides` can be used to configure properties in product config files that are not exposed in the CRD. Read the [config overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#config-overrides) and consult the operator specific usage guide documentation for details on the available config files and settings for the specific product. type: object envOverrides: additionalProperties: type: string default: {} - description: '`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available.' + description: '`envOverrides` configure environment variables to be set in the Pods. It is a map from strings to strings - environment variables and the value to set. Read the [environment variable overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#env-overrides) for more information and consult the operator specific usage guide to find out about the product specific environment variables that are available.' type: object jvmArgumentOverrides: default: add: [] remove: [] removeRegex: [] - description: Allows overriding JVM arguments. Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides) for details on the usage. + description: Allows overriding JVM arguments. Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#jvm-argument-overrides) for details on the usage. properties: add: default: [] @@ -1262,7 +1262,7 @@ spec: type: object podOverrides: default: {} - description: In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides) for more information. + description: In the `podOverrides` property you can define a [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#podtemplatespec-v1-core) to override any property that can be set on a Kubernetes Pod. Read the [Pod overrides documentation](https://docs.stackable.tech/home/25.7/concepts/overrides#pod-overrides) for more information. type: object x-kubernetes-preserve-unknown-fields: true replicas: diff --git a/docs/antora.yml b/docs/antora.yml index d522680b..35013e93 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1,3 +1,4 @@ --- name: home -version: "nightly" +version: "25.7" +prerelease: false diff --git a/docs/modules/nifi/examples/getting_started/getting_started.sh b/docs/modules/nifi/examples/getting_started/getting_started.sh index 4c0a1c80..f0b7b121 100755 --- a/docs/modules/nifi/examples/getting_started/getting_started.sh +++ b/docs/modules/nifi/examples/getting_started/getting_started.sh @@ -26,20 +26,20 @@ case "$1" in "helm") echo "Installing Operators with Helm" # tag::helm-install-operators[] -helm install --wait commons-operator oci://oci.stackable.tech/sdp-charts/commons-operator --version 0.0.0-dev -helm install --wait secret-operator oci://oci.stackable.tech/sdp-charts/secret-operator --version 0.0.0-dev -helm install --wait listener-operator oci://oci.stackable.tech/sdp-charts/listener-operator --version 0.0.0-dev -helm install --wait nifi-operator oci://oci.stackable.tech/sdp-charts/nifi-operator --version 0.0.0-dev +helm install --wait commons-operator oci://oci.stackable.tech/sdp-charts/commons-operator --version 25.7.0-rc1 +helm install --wait secret-operator oci://oci.stackable.tech/sdp-charts/secret-operator --version 25.7.0-rc1 +helm install --wait listener-operator oci://oci.stackable.tech/sdp-charts/listener-operator --version 25.7.0-rc1 +helm install --wait nifi-operator oci://oci.stackable.tech/sdp-charts/nifi-operator --version 25.7.0-rc1 # end::helm-install-operators[] ;; "stackablectl") echo "installing Operators with stackablectl" # tag::stackablectl-install-operators[] stackablectl operator install \ - commons=0.0.0-dev \ - secret=0.0.0-dev \ - listener=0.0.0-dev \ - nifi=0.0.0-dev + commons=25.7.0-rc1 \ + secret=25.7.0-rc1 \ + listener=25.7.0-rc1 \ + nifi=25.7.0-rc1 # end::stackablectl-install-operators[] ;; *) diff --git a/docs/modules/nifi/examples/getting_started/install_output.txt b/docs/modules/nifi/examples/getting_started/install_output.txt index 26756a31..5c8fb7cc 100644 --- a/docs/modules/nifi/examples/getting_started/install_output.txt +++ b/docs/modules/nifi/examples/getting_started/install_output.txt @@ -1,5 +1,5 @@ -Installed commons=0.0.0-dev operator -Installed secret=0.0.0-dev operator -Installed listener=0.0.0-dev operator -Installed zookeeper=0.0.0-dev operator -Installed nifi=0.0.0-dev operator +Installed commons=25.7.0-rc1 operator +Installed secret=25.7.0-rc1 operator +Installed listener=25.7.0-rc1 operator +Installed zookeeper=25.7.0-rc1 operator +Installed nifi=25.7.0-rc1 operator diff --git a/docs/templating_vars.yaml b/docs/templating_vars.yaml index 90612f4b..1a54ab77 100644 --- a/docs/templating_vars.yaml +++ b/docs/templating_vars.yaml @@ -3,8 +3,8 @@ helm: repo_name: sdp-charts repo_url: oci.stackable.tech versions: - commons: 0.0.0-dev - secret: 0.0.0-dev - listener: 0.0.0-dev - zookeeper: 0.0.0-dev - nifi: 0.0.0-dev + commons: 25.7.0-rc1 + secret: 25.7.0-rc1 + listener: 25.7.0-rc1 + zookeeper: 25.7.0-rc1 + nifi: 25.7.0-rc1 diff --git a/tests/release.yaml b/tests/release.yaml index 04ee6498..e7b0ad81 100644 --- a/tests/release.yaml +++ b/tests/release.yaml @@ -7,20 +7,20 @@ releases: description: Integration test products: commons: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1 secret: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1 listener: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1 opa: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1 zookeeper: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1 hdfs: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1 hive: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1 trino: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1 nifi: - operatorVersion: 0.0.0-dev + operatorVersion: 25.7.0-rc1