diff --git a/README.md b/README.md
index 78a327c..3f3c6b6 100644
--- a/README.md
+++ b/README.md
@@ -49,6 +49,7 @@
| [opentelemetry\_operator](#module\_opentelemetry\_operator) | ./modules/monitoring-opentelemetry-operator | n/a |
| [prometheus\_stack](#module\_prometheus\_stack) | ./modules/monitoring-prometheus-stack | n/a |
| [pulsar\_kaap](#module\_pulsar\_kaap) | ./modules/pulsar-kaap | n/a |
+| [pulsar\_resources\_operator](#module\_pulsar\_resources\_operator) | ./modules/pulsar-resources-operator | n/a |
| [streamx\_dashboards](#module\_streamx\_dashboards) | ./modules/monitoring-streamx-grafana-dashboards | n/a |
| [streamx\_operator](#module\_streamx\_operator) | ./modules/streamx-operator | n/a |
| [streamx\_operator\_image\_pull\_secret](#module\_streamx\_operator\_image\_pull\_secret) | ./modules/docker-config-secret | n/a |
@@ -184,6 +185,18 @@
| [pulsar\_kaap\_settings](#input\_pulsar\_kaap\_settings) | Additional key value settings which will be passed to the Helm chart values, e.g. { "namespace" = "kube-system" }. | `map(any)` | `null` | no |
| [pulsar\_kaap\_timeout](#input\_pulsar\_kaap\_timeout) | Time in seconds to wait for any individual kubernetes operation | `number` | `null` | no |
| [pulsar\_kaap\_values](#input\_pulsar\_kaap\_values) | A list of values in raw YAML to be applied to the helm release. Overrides default values from [default-configs](./default-configs). Merges with the settings input, can also be used with the `file()` function, i.e. `file("my/values.yaml")`. | `list(string)` | `null` | no |
+| [pulsar\_resources\_operator\_chart\_name](#input\_pulsar\_resources\_operator\_chart\_name) | The name of the Helm chart to install | `string` | `null` | no |
+| [pulsar\_resources\_operator\_chart\_repository](#input\_pulsar\_resources\_operator\_chart\_repository) | The repository containing the Helm chart to install. | `string` | `null` | no |
+| [pulsar\_resources\_operator\_chart\_repository\_password](#input\_pulsar\_resources\_operator\_chart\_repository\_password) | The password used for the repository authentication. | `string` | `null` | no |
+| [pulsar\_resources\_operator\_chart\_repository\_username](#input\_pulsar\_resources\_operator\_chart\_repository\_username) | The username used for the repository authentication. | `string` | `null` | no |
+| [pulsar\_resources\_operator\_chart\_version](#input\_pulsar\_resources\_operator\_chart\_version) | The version of the Helm chart to install. | `string` | `null` | no |
+| [pulsar\_resources\_operator\_create\_namespace](#input\_pulsar\_resources\_operator\_create\_namespace) | Create a namespace for the deployment. | `bool` | `true` | no |
+| [pulsar\_resources\_operator\_enabled](#input\_pulsar\_resources\_operator\_enabled) | Enables Pulsar Resources Operator. | `bool` | `true` | no |
+| [pulsar\_resources\_operator\_namespace](#input\_pulsar\_resources\_operator\_namespace) | The namespace used for the deployment | `string` | `"pulsar-resources-operator"` | no |
+| [pulsar\_resources\_operator\_release\_name](#input\_pulsar\_resources\_operator\_release\_name) | The name of the helm release. | `string` | `null` | no |
+| [pulsar\_resources\_operator\_settings](#input\_pulsar\_resources\_operator\_settings) | Additional key value settings which will be passed to the Helm chart values, e.g. { "namespace" = "kube-system" }. | `map(any)` | `null` | no |
+| [pulsar\_resources\_operator\_timeout](#input\_pulsar\_resources\_operator\_timeout) | Time in seconds to wait for any individual kubernetes operation. | `number` | `null` | no |
+| [pulsar\_resources\_operator\_values](#input\_pulsar\_resources\_operator\_values) | A list of values in raw YAML to be applied to the helm release. Overrides default composed values. Merges with the settings input, can also be used with the `file()` function, i.e. `file("my/values.yaml")`. | `list(string)` | `null` | no |
| [streamx\_operator\_chart\_name](#input\_streamx\_operator\_chart\_name) | The name of the Helm chart to install | `string` | `null` | no |
| [streamx\_operator\_chart\_repository](#input\_streamx\_operator\_chart\_repository) | The repository containing the Helm chart to install. | `string` | `null` | no |
| [streamx\_operator\_chart\_repository\_password](#input\_streamx\_operator\_chart\_repository\_password) | The password used for the repository authentication. | `string` | `null` | no |
@@ -201,7 +214,7 @@
| [streamx\_operator\_messaging\_pulsar\_client\_service\_url](#input\_streamx\_operator\_messaging\_pulsar\_client\_service\_url) | Pulsar client service URL passed to StreamX Operator. If null and KAAP enabled then KAAP default URL is used. | `string` | `null` | no |
| [streamx\_operator\_monitoring\_traces\_endpoint](#input\_streamx\_operator\_monitoring\_traces\_endpoint) | Traces collector URL | `string` | `null` | no |
| [streamx\_operator\_monitoring\_traces\_mode](#input\_streamx\_operator\_monitoring\_traces\_mode) | Traces monitoring mode for StreamX Meshes deployed by StreamX Operator | `string` | `null` | no |
-| [streamx\_operator\_namespace](#input\_streamx\_operator\_namespace) | The namespace used for the deployment | `string` | `"streamx-operator"` | no |
+| [streamx\_operator\_namespace](#input\_streamx\_operator\_namespace) | The namespace used for the deployment | `string` | `"streamx-system"` | no |
| [streamx\_operator\_release\_name](#input\_streamx\_operator\_release\_name) | The name of the helm release. | `string` | `null` | no |
| [streamx\_operator\_settings](#input\_streamx\_operator\_settings) | Additional key value settings which will be passed to the Helm chart values, e.g. { "namespace" = "kube-system" }. | `map(any)` | `null` | no |
| [streamx\_operator\_timeout](#input\_streamx\_operator\_timeout) | Time in seconds to wait for any individual kubernetes operation. | `number` | `null` | no |
diff --git a/modules/cnpg-cluster/README.md b/modules/cnpg-cluster/README.md
new file mode 100644
index 0000000..0eebbab
--- /dev/null
+++ b/modules/cnpg-cluster/README.md
@@ -0,0 +1,51 @@
+
+## Requirements
+
+| Name | Version |
+|------|---------|
+| [terraform](#requirement\_terraform) | >= 1.0.0 |
+| [helm](#requirement\_helm) | >= 2.17.0, < 3.0.0 |
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| [helm](#provider\_helm) | >= 2.17.0, < 3.0.0 |
+| [kubernetes](#provider\_kubernetes) | n/a |
+
+## Modules
+
+No modules.
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [helm_release.release](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
+| [kubernetes_secret_v1.cluster_app](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/data-sources/secret_v1) | data source |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [atomic](#input\_atomic) | Purge the chart on a failed installation. | `bool` | `null` | no |
+| [chart\_name](#input\_chart\_name) | The name of the Helm chart to install | `string` | `null` | no |
+| [chart\_repository](#input\_chart\_repository) | The repository containing the Helm chart to install | `string` | `null` | no |
+| [chart\_version](#input\_chart\_version) | The version of the Helm chart to install | `string` | `null` | no |
+| [cleanup\_on\_fail](#input\_cleanup\_on\_fail) | Allow deletion of new resources created in this upgrade when upgrade fails | `bool` | `null` | no |
+| [create\_namespace](#input\_create\_namespace) | Create a namespace for the deployment. Defaults to "true". | `bool` | `null` | no |
+| [force\_defaults\_for\_null\_variables](#input\_force\_defaults\_for\_null\_variables) | Enables forcing default variable values when the variable value passed to the module is null. | `bool` | `true` | no |
+| [namespace](#input\_namespace) | The namespace used for the deployment | `string` | `null` | no |
+| [release\_name](#input\_release\_name) | The name of the helm release | `string` | `null` | no |
+| [settings](#input\_settings) | Settings which will be passed to the Helm chart values | `map(any)` | `null` | no |
+| [timeout](#input\_timeout) | Time in seconds to wait for any individual kubernetes operation | `number` | `null` | no |
+| [values](#input\_values) | A list of values in raw YAML to be applied to the helm release. Merges with the settings input, can also be used with the `file()` function, i.e. `file("my/values.yaml")`. | `any` | `null` | no |
+
+## Outputs
+
+| Name | Description |
+|------|-------------|
+| [db\_name](#output\_db\_name) | n/a |
+| [db\_password](#output\_db\_password) | n/a |
+| [db\_username](#output\_db\_username) | n/a |
+
\ No newline at end of file
diff --git a/modules/cnpg-cluster/chart.yaml b/modules/cnpg-cluster/chart.yaml
new file mode 100644
index 0000000..941f344
--- /dev/null
+++ b/modules/cnpg-cluster/chart.yaml
@@ -0,0 +1,3 @@
+chart: cluster
+repository: https://cloudnative-pg.github.io/charts
+version: 0.3.1
diff --git a/modules/cnpg-cluster/main.tf b/modules/cnpg-cluster/main.tf
new file mode 100644
index 0000000..9b38ae7
--- /dev/null
+++ b/modules/cnpg-cluster/main.tf
@@ -0,0 +1,71 @@
+# Copyright 2025 Dynamic Solutions Sp. z o.o. sp.k.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+locals {
+ chart_defaults = yamldecode(file("${path.module}/chart.yaml"))
+ default_atomic = true
+ default_chart_name = local.chart_defaults.chart
+ default_chart_repository = local.chart_defaults.repository
+ default_chart_version = local.chart_defaults.version
+ default_cleanup_on_fail = true
+ default_create_namespace = true
+ default_namespace = "cnpg-system"
+ default_release_name = "cnpg"
+ default_settings = {}
+ default_timeout = 300
+ default_values = []
+
+ atomic = var.force_defaults_for_null_variables && var.atomic == null ? local.default_atomic : var.atomic
+ chart_name = var.force_defaults_for_null_variables && var.chart_name == null ? local.default_chart_name : var.chart_name
+ chart_repository = var.force_defaults_for_null_variables && var.chart_repository == null ? local.default_chart_repository : var.chart_repository
+ chart_version = var.force_defaults_for_null_variables && var.chart_version == null ? local.default_chart_version : var.chart_version
+ cleanup_on_fail = var.force_defaults_for_null_variables && var.cleanup_on_fail == null ? local.default_cleanup_on_fail : var.cleanup_on_fail
+ create_namespace = var.force_defaults_for_null_variables && var.create_namespace == null ? local.default_create_namespace : var.create_namespace
+ namespace = var.force_defaults_for_null_variables && var.namespace == null ? local.default_namespace : var.namespace
+ release_name = var.force_defaults_for_null_variables && var.release_name == null ? local.default_release_name : var.release_name
+ settings = var.force_defaults_for_null_variables && var.settings == null ? local.default_settings : var.settings
+ timeout = var.force_defaults_for_null_variables && var.timeout == null ? local.default_timeout : var.timeout
+ values = var.force_defaults_for_null_variables && var.values == null ? local.default_values : var.values
+}
+
+resource "helm_release" "release" {
+ atomic = local.atomic
+ chart = local.chart_name
+ cleanup_on_fail = local.cleanup_on_fail
+ create_namespace = local.create_namespace
+ name = local.release_name
+ namespace = local.namespace
+ repository = local.chart_repository
+ timeout = local.timeout
+ version = local.chart_version
+ values = local.values
+
+ dynamic "set" {
+ for_each = local.settings
+ content {
+ name = set.key
+ value = set.value
+ }
+ }
+}
+
+data "kubernetes_secret_v1" "cluster_app" {
+ metadata {
+ name = "${local.release_name}-cluster-app"
+ namespace = local.namespace
+ }
+
+ depends_on = [helm_release.release]
+}
diff --git a/modules/cnpg-cluster/output.tf b/modules/cnpg-cluster/output.tf
new file mode 100644
index 0000000..5f72792
--- /dev/null
+++ b/modules/cnpg-cluster/output.tf
@@ -0,0 +1,12 @@
+output "db_username" {
+ value = data.kubernetes_secret_v1.cluster_app.data.username
+}
+
+output "db_password" {
+ value = data.kubernetes_secret_v1.cluster_app.data.password
+ sensitive = true
+}
+
+output "db_name" {
+ value = data.kubernetes_secret_v1.cluster_app.data.dbname
+}
\ No newline at end of file
diff --git a/modules/cnpg-cluster/variables.tf b/modules/cnpg-cluster/variables.tf
new file mode 100644
index 0000000..92a630c
--- /dev/null
+++ b/modules/cnpg-cluster/variables.tf
@@ -0,0 +1,85 @@
+# Copyright 2025 Dynamic Solutions Sp. z o.o. sp.k.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+variable "force_defaults_for_null_variables" {
+ default = true
+ description = "Enables forcing default variable values when the variable value passed to the module is null."
+ type = bool
+}
+
+variable "atomic" {
+ default = null
+ description = "Purge the chart on a failed installation."
+ type = bool
+}
+
+variable "chart_name" {
+ default = null
+ description = "The name of the Helm chart to install"
+ type = string
+}
+
+variable "chart_repository" {
+ default = null
+ description = "The repository containing the Helm chart to install"
+ type = string
+}
+
+variable "chart_version" {
+ default = null
+ description = "The version of the Helm chart to install"
+ type = string
+}
+
+variable "cleanup_on_fail" {
+ default = null
+ description = "Allow deletion of new resources created in this upgrade when upgrade fails"
+ type = bool
+}
+
+variable "create_namespace" {
+ default = null
+ description = "Create a namespace for the deployment. Defaults to \"true\"."
+ type = bool
+}
+
+variable "namespace" {
+ default = null
+ description = "The namespace used for the deployment"
+ type = string
+}
+
+variable "release_name" {
+ default = null
+ description = "The name of the helm release"
+ type = string
+}
+
+variable "settings" {
+ default = null
+ description = "Settings which will be passed to the Helm chart values"
+ type = map(any)
+}
+
+variable "timeout" {
+ default = null
+ description = "Time in seconds to wait for any individual kubernetes operation"
+ type = number
+}
+
+variable "values" {
+ default = null
+ description = "A list of values in raw YAML to be applied to the helm release. Merges with the settings input, can also be used with the `file()` function, i.e. `file(\"my/values.yaml\")`."
+}
diff --git a/modules/cnpg-cluster/versions.tf b/modules/cnpg-cluster/versions.tf
new file mode 100644
index 0000000..7e22a7e
--- /dev/null
+++ b/modules/cnpg-cluster/versions.tf
@@ -0,0 +1,24 @@
+# Copyright 2025 Dynamic Solutions Sp. z o.o. sp.k.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+terraform {
+ required_version = ">= 1.0.0"
+ required_providers {
+ helm = {
+ source = "hashicorp/helm"
+ version = ">= 2.17.0, < 3.0.0"
+ }
+ }
+}
diff --git a/modules/cnpg-operator/README.md b/modules/cnpg-operator/README.md
new file mode 100644
index 0000000..0affd31
--- /dev/null
+++ b/modules/cnpg-operator/README.md
@@ -0,0 +1,45 @@
+
+## Requirements
+
+| Name | Version |
+|------|---------|
+| [terraform](#requirement\_terraform) | >= 1.0.0 |
+| [helm](#requirement\_helm) | >= 2.17.0, < 3.0.0 |
+
+## Providers
+
+| Name | Version |
+|------|---------|
+| [helm](#provider\_helm) | >= 2.17.0, < 3.0.0 |
+
+## Modules
+
+No modules.
+
+## Resources
+
+| Name | Type |
+|------|------|
+| [helm_release.cert_manager](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
+
+## Inputs
+
+| Name | Description | Type | Default | Required |
+|------|-------------|------|---------|:--------:|
+| [atomic](#input\_atomic) | Purge the chart on a failed installation. | `bool` | `null` | no |
+| [chart\_name](#input\_chart\_name) | The name of the Helm chart to install | `string` | `null` | no |
+| [chart\_repository](#input\_chart\_repository) | The repository containing the Helm chart to install | `string` | `null` | no |
+| [chart\_version](#input\_chart\_version) | The version of the Helm chart to install | `string` | `null` | no |
+| [cleanup\_on\_fail](#input\_cleanup\_on\_fail) | Allow deletion of new resources created in this upgrade when upgrade fails | `bool` | `null` | no |
+| [create\_namespace](#input\_create\_namespace) | Create a namespace for the deployment. Defaults to "true". | `bool` | `null` | no |
+| [force\_defaults\_for\_null\_variables](#input\_force\_defaults\_for\_null\_variables) | Enables forcing default variable values when the variable value passed to the module is null. | `bool` | `true` | no |
+| [namespace](#input\_namespace) | The namespace used for the deployment | `string` | `null` | no |
+| [release\_name](#input\_release\_name) | The name of the helm release | `string` | `null` | no |
+| [settings](#input\_settings) | Settings which will be passed to the Helm chart values | `map(any)` | `null` | no |
+| [timeout](#input\_timeout) | Time in seconds to wait for any individual kubernetes operation | `number` | `null` | no |
+| [values](#input\_values) | A list of values in raw YAML to be applied to the helm release. Merges with the settings input, can also be used with the `file()` function, i.e. `file("my/values.yaml")`. | `any` | `null` | no |
+
+## Outputs
+
+No outputs.
+
\ No newline at end of file
diff --git a/modules/cnpg-operator/chart.yaml b/modules/cnpg-operator/chart.yaml
new file mode 100644
index 0000000..d3f2786
--- /dev/null
+++ b/modules/cnpg-operator/chart.yaml
@@ -0,0 +1,3 @@
+chart: cloudnative-pg
+repository: https://cloudnative-pg.github.io/charts
+version: 0.26.1
diff --git a/modules/cnpg-operator/main.tf b/modules/cnpg-operator/main.tf
new file mode 100644
index 0000000..61fe052
--- /dev/null
+++ b/modules/cnpg-operator/main.tf
@@ -0,0 +1,62 @@
+# Copyright 2025 Dynamic Solutions Sp. z o.o. sp.k.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+locals {
+ chart_defaults = yamldecode(file("${path.module}/chart.yaml"))
+ default_atomic = true
+ default_chart_name = local.chart_defaults.chart
+ default_chart_repository = local.chart_defaults.repository
+ default_chart_version = local.chart_defaults.version
+ default_cleanup_on_fail = true
+ default_create_namespace = true
+ default_namespace = "cnpg-system"
+ default_release_name = "cnpg"
+ default_settings = {}
+ default_timeout = 300
+ default_values = []
+
+ atomic = var.force_defaults_for_null_variables && var.atomic == null ? local.default_atomic : var.atomic
+ chart_name = var.force_defaults_for_null_variables && var.chart_name == null ? local.default_chart_name : var.chart_name
+ chart_repository = var.force_defaults_for_null_variables && var.chart_repository == null ? local.default_chart_repository : var.chart_repository
+ chart_version = var.force_defaults_for_null_variables && var.chart_version == null ? local.default_chart_version : var.chart_version
+ cleanup_on_fail = var.force_defaults_for_null_variables && var.cleanup_on_fail == null ? local.default_cleanup_on_fail : var.cleanup_on_fail
+ create_namespace = var.force_defaults_for_null_variables && var.create_namespace == null ? local.default_create_namespace : var.create_namespace
+ namespace = var.force_defaults_for_null_variables && var.namespace == null ? local.default_namespace : var.namespace
+ release_name = var.force_defaults_for_null_variables && var.release_name == null ? local.default_release_name : var.release_name
+ settings = var.force_defaults_for_null_variables && var.settings == null ? local.default_settings : var.settings
+ timeout = var.force_defaults_for_null_variables && var.timeout == null ? local.default_timeout : var.timeout
+ values = var.force_defaults_for_null_variables && var.values == null ? local.default_values : var.values
+}
+
+resource "helm_release" "cert_manager" {
+ atomic = local.atomic
+ chart = local.chart_name
+ cleanup_on_fail = local.cleanup_on_fail
+ create_namespace = local.create_namespace
+ name = local.release_name
+ namespace = local.namespace
+ repository = local.chart_repository
+ timeout = local.timeout
+ version = local.chart_version
+ values = local.values
+
+ dynamic "set" {
+ for_each = local.settings
+ content {
+ name = set.key
+ value = set.value
+ }
+ }
+}
diff --git a/modules/cnpg-operator/variables.tf b/modules/cnpg-operator/variables.tf
new file mode 100644
index 0000000..92a630c
--- /dev/null
+++ b/modules/cnpg-operator/variables.tf
@@ -0,0 +1,85 @@
+# Copyright 2025 Dynamic Solutions Sp. z o.o. sp.k.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+variable "force_defaults_for_null_variables" {
+ default = true
+ description = "Enables forcing default variable values when the variable value passed to the module is null."
+ type = bool
+}
+
+variable "atomic" {
+ default = null
+ description = "Purge the chart on a failed installation."
+ type = bool
+}
+
+variable "chart_name" {
+ default = null
+ description = "The name of the Helm chart to install"
+ type = string
+}
+
+variable "chart_repository" {
+ default = null
+ description = "The repository containing the Helm chart to install"
+ type = string
+}
+
+variable "chart_version" {
+ default = null
+ description = "The version of the Helm chart to install"
+ type = string
+}
+
+variable "cleanup_on_fail" {
+ default = null
+ description = "Allow deletion of new resources created in this upgrade when upgrade fails"
+ type = bool
+}
+
+variable "create_namespace" {
+ default = null
+ description = "Create a namespace for the deployment. Defaults to \"true\"."
+ type = bool
+}
+
+variable "namespace" {
+ default = null
+ description = "The namespace used for the deployment"
+ type = string
+}
+
+variable "release_name" {
+ default = null
+ description = "The name of the helm release"
+ type = string
+}
+
+variable "settings" {
+ default = null
+ description = "Settings which will be passed to the Helm chart values"
+ type = map(any)
+}
+
+variable "timeout" {
+ default = null
+ description = "Time in seconds to wait for any individual kubernetes operation"
+ type = number
+}
+
+variable "values" {
+ default = null
+ description = "A list of values in raw YAML to be applied to the helm release. Merges with the settings input, can also be used with the `file()` function, i.e. `file(\"my/values.yaml\")`."
+}
diff --git a/modules/cnpg-operator/versions.tf b/modules/cnpg-operator/versions.tf
new file mode 100644
index 0000000..7e22a7e
--- /dev/null
+++ b/modules/cnpg-operator/versions.tf
@@ -0,0 +1,24 @@
+# Copyright 2025 Dynamic Solutions Sp. z o.o. sp.k.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+terraform {
+ required_version = ">= 1.0.0"
+ required_providers {
+ helm = {
+ source = "hashicorp/helm"
+ version = ">= 2.17.0, < 3.0.0"
+ }
+ }
+}
diff --git a/modules/monitoring-kaap-pod-monitor/README.md b/modules/monitoring-kaap-pod-monitor/README.md
index ae38cfc..211117e 100644
--- a/modules/monitoring-kaap-pod-monitor/README.md
+++ b/modules/monitoring-kaap-pod-monitor/README.md
@@ -23,6 +23,7 @@ No modules.
| [kubectl_manifest.kaap_bookkeeper_pod_monitor](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
| [kubectl_manifest.kaap_broker_pod_monitor](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
| [kubectl_manifest.kaap_operator_pod_monitor](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
+| [kubectl_manifest.kaap_proxy_pod_monitor](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
| [kubectl_manifest.kaap_zookeeper_pod_monitor](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
## Inputs
diff --git a/modules/monitoring-loki-grafana-dashboards/README.md b/modules/monitoring-loki-grafana-dashboards/README.md
index 11f1cce..346bd53 100644
--- a/modules/monitoring-loki-grafana-dashboards/README.md
+++ b/modules/monitoring-loki-grafana-dashboards/README.md
@@ -27,6 +27,7 @@ No modules.
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [force\_defaults\_for\_null\_variables](#input\_force\_defaults\_for\_null\_variables) | Enables forcing default variable values when the variable value passed to the module is null. | `bool` | `true` | no |
+| [multicluster](#input\_multicluster) | If false Cluster variable in dashboards is hidden | `bool` | `false` | no |
| [namespace](#input\_namespace) | The namespace used for Grafana deployment | `string` | `"prometheus-stack"` | no |
## Outputs
diff --git a/modules/monitoring-opentelemetry-collector/README.md b/modules/monitoring-opentelemetry-collector/README.md
index 8f71457..3f1126b 100644
--- a/modules/monitoring-opentelemetry-collector/README.md
+++ b/modules/monitoring-opentelemetry-collector/README.md
@@ -29,7 +29,7 @@ No modules.
| [atomic](#input\_atomic) | Purge the chart on a failed installation. Default's to "true". | `bool` | `true` | no |
| [chart\_name](#input\_chart\_name) | The name of the Helm chart to install | `string` | `"opentelemetry-collector"` | no |
| [chart\_repository](#input\_chart\_repository) | The repository containing the Helm chart to install | `string` | `"https://open-telemetry.github.io/opentelemetry-helm-charts"` | no |
-| [chart\_version](#input\_chart\_version) | The version of the Helm chart to install | `string` | `"0.117.0"` | no |
+| [chart\_version](#input\_chart\_version) | The version of the Helm chart to install | `string` | `"0.139.0"` | no |
| [cleanup\_on\_fail](#input\_cleanup\_on\_fail) | Allow deletion of new resources created in this upgrade when upgrade fails | `bool` | `true` | no |
| [create\_namespace](#input\_create\_namespace) | Create a namespace for the deployment. Defaults to "true". | `bool` | `true` | no |
| [force\_defaults\_for\_null\_variables](#input\_force\_defaults\_for\_null\_variables) | Enables forcing default variable values when the variable value passed to the module is null. | `bool` | `true` | no |
diff --git a/modules/monitoring-opentelemetry-operator/README.md b/modules/monitoring-opentelemetry-operator/README.md
index 89b0935..7280552 100644
--- a/modules/monitoring-opentelemetry-operator/README.md
+++ b/modules/monitoring-opentelemetry-operator/README.md
@@ -29,7 +29,7 @@ No modules.
| [atomic](#input\_atomic) | Purge the chart on a failed installation. Default's to "true". | `bool` | `true` | no |
| [chart\_name](#input\_chart\_name) | The name of the Helm chart to install | `string` | `"opentelemetry-operator"` | no |
| [chart\_repository](#input\_chart\_repository) | The repository containing the Helm chart to install | `string` | `"https://open-telemetry.github.io/opentelemetry-helm-charts"` | no |
-| [chart\_version](#input\_chart\_version) | The version of the Helm chart to install | `string` | `"0.80.2"` | no |
+| [chart\_version](#input\_chart\_version) | The version of the Helm chart to install | `string` | `"0.99.0"` | no |
| [cleanup\_on\_fail](#input\_cleanup\_on\_fail) | Allow deletion of new resources created in this upgrade when upgrade fails | `bool` | `true` | no |
| [create\_namespace](#input\_create\_namespace) | Create a namespace for the deployment. Defaults to "true". | `bool` | `true` | no |
| [force\_defaults\_for\_null\_variables](#input\_force\_defaults\_for\_null\_variables) | Enables forcing default variable values when the variable value passed to the module is null. | `bool` | `true` | no |
diff --git a/modules/monitoring-streamx-grafana-dashboards/README.md b/modules/monitoring-streamx-grafana-dashboards/README.md
index b67026b..496f061 100644
--- a/modules/monitoring-streamx-grafana-dashboards/README.md
+++ b/modules/monitoring-streamx-grafana-dashboards/README.md
@@ -27,6 +27,7 @@ No modules.
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [force\_defaults\_for\_null\_variables](#input\_force\_defaults\_for\_null\_variables) | Enables forcing default variable values when the variable value passed to the module is null. | `bool` | `true` | no |
+| [multicluster](#input\_multicluster) | If false Cluster variable in dashboards is hidden | `bool` | `false` | no |
| [namespace](#input\_namespace) | The namespace used for the deployment | `string` | `"prometheus-stack"` | no |
## Outputs
diff --git a/modules/monitoring-streamx-pod-monitor/README.md b/modules/monitoring-streamx-pod-monitor/README.md
index 3c9e82f..9b04b10 100644
--- a/modules/monitoring-streamx-pod-monitor/README.md
+++ b/modules/monitoring-streamx-pod-monitor/README.md
@@ -20,6 +20,7 @@ No modules.
| Name | Type |
|------|------|
+| [kubectl_manifest.streamx_operator_pod_monitor](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
| [kubectl_manifest.streamx_pod_monitor](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
## Inputs
diff --git a/modules/streamx-operator/README.md b/modules/streamx-operator/README.md
index 7db1217..2fd5834 100644
--- a/modules/streamx-operator/README.md
+++ b/modules/streamx-operator/README.md
@@ -20,13 +20,14 @@
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.0.0 |
| [helm](#requirement\_helm) | >= 2.17.0, < 3.0.0 |
+| [kubectl](#requirement\_kubectl) | >= 1.14.0 |
## Providers
| Name | Version |
|------|---------|
| [helm](#provider\_helm) | 2.17.0 |
-| [kubectl](#provider\_kubectl) | n/a |
+| [kubectl](#provider\_kubectl) | >= 1.14.0 |
## Modules
@@ -37,7 +38,7 @@ No modules.
| Name | Type |
|------|------|
| [helm_release.streamx_operator](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
-| [kubectl_manifest.pulsar_messaging_config](https://registry.terraform.io/providers/hashicorp/kubectl/latest/docs/resources/manifest) | resource |
+| [kubectl_manifest.pulsar_messaging_config](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
## Inputs
@@ -48,12 +49,12 @@ No modules.
| [chart\_repository](#input\_chart\_repository) | The repository containing the Helm chart to install | `string` | `"oci://europe-west1-docker.pkg.dev/streamx-releases/streamx-helm-charts"` | no |
| [chart\_repository\_password](#input\_chart\_repository\_password) | The password used for the repository authentication | `string` | `null` | no |
| [chart\_repository\_username](#input\_chart\_repository\_username) | The username used for the repository authentication | `string` | `null` | no |
-| [chart\_version](#input\_chart\_version) | The version of the Helm chart to install | `string` | `"0.0.7"` | no |
+| [chart\_version](#input\_chart\_version) | The version of the Helm chart to install | `string` | `"0.0.8"` | no |
| [cleanup\_on\_fail](#input\_cleanup\_on\_fail) | Allow deletion of new resources created in this upgrade when upgrade fails | `bool` | `true` | no |
| [create\_namespace](#input\_create\_namespace) | Create a namespace for the deployment. Defaults to "true". | `bool` | `true` | no |
| [force\_defaults\_for\_null\_variables](#input\_force\_defaults\_for\_null\_variables) | Enables forcing default variable values when the variable value passed to the module is null. | `bool` | `true` | no |
-| [namespace](#input\_namespace) | The namespace used for the deployment | `string` | `"streamx-operator"` | no |
-| [pulsar\_messaging\_config\_admin\_service\_url](#input\_pulsar\_messaging\_config\_admin\_service\_url) | Pulsar admin service URL passed to StreamX Operator. If null then default MessagingConfig is not created. | `string` | `null` | no |
+| [namespace](#input\_namespace) | The namespace used for the deployment | `string` | `"streamx-system"` | no |
+| [pulsar\_messaging\_config\_admin\_service\_url](#input\_pulsar\_messaging\_config\_admin\_service\_url) | Pulsar admin service URL passed to default MessagingConfig resource. If null then default MessagingConfig is not created. | `string` | `null` | no |
| [pulsar\_messaging\_config\_client\_service\_url](#input\_pulsar\_messaging\_config\_client\_service\_url) | Pulsar client service URL passed to default MessagingConfig resource. If null then default MessagingConfig is not created. | `string` | `null` | no |
| [release\_name](#input\_release\_name) | The name of the helm release | `string` | `"streamx-operator"` | no |
| [settings](#input\_settings) | Settings which will be passed to the Helm chart values | `map(any)` | `{}` | no |