From 3680eb6cdb6177c7d976231d299ca663e5217648 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Fri, 28 Jun 2024 01:54:53 -0500 Subject: [PATCH 01/69] [fix] remove pulsar monitor dashboard (#174) This dashboard was replaced by the pulsarheartbeat dashboard. It currently causes a conflict in Grafana due to the duplicate UID. --- .../grafana-dashboards/pulsarmonitor.json | 703 ------------------ 1 file changed, 703 deletions(-) delete mode 100644 helm/kaap-stack/grafana-dashboards/pulsarmonitor.json diff --git a/helm/kaap-stack/grafana-dashboards/pulsarmonitor.json b/helm/kaap-stack/grafana-dashboards/pulsarmonitor.json deleted file mode 100644 index 8d46882c..00000000 --- a/helm/kaap-stack/grafana-dashboards/pulsarmonitor.json +++ /dev/null @@ -1,703 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 31, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_pubsub_latency_ms", - "legendFormat": "{{ device }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "End-to-End Topic Pubsub Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 23, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_k8s_bookkeeper_offline_counter", - "interval": "", - "legendFormat": "", - "refId": "A" - }, - { - "expr": "pulsar_k8s_broker_offline_counter", - "interval": "", - "legendFormat": "", - "refId": "B" - }, - { - "expr": "pulsar_k8s_zookeeper_offline_counter", - "interval": "", - "legendFormat": "", - "refId": "C" - }, - { - "expr": "pulsar_k8s_proxy_offline_counter", - "interval": "", - "legendFormat": "", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Instances offline counter", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_tenant_size ", - "legendFormat": "{{ device }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Tenants", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 0, - "y": 9 - }, - "id": 18, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "pluginVersion": "6.5.2", - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false, - "ymax": null, - "ymin": null - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(pulsar_tenant_size)", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "timeFrom": null, - "timeShift": null, - "title": "Tenants", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [ - { - "id": 0, - "op": "=", - "text": "N/A", - "type": 1, - "value": "null" - } - ], - "nullValueMode": "connected", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 4, - "y": 9 - }, - "id": 12, - "interval": null, - "links": [], - "maxDataPoints": 100, - "options": { - "colorMode": "value", - "fieldOptions": { - "calcs": [ - "mean" - ] - }, - "graphMode": "none", - "justifyMode": "auto", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - } - }, - "pluginVersion": "7.0.3", - "targets": [ - { - "expr": "sum(pulsar_monitor_counter)/7200", - "format": "heatmap", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Uptime hours", - "type": "stat" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 12 - }, - "hiddenSeries": false, - "id": 21, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_websocket_latency_ms", - "interval": "", - "legendFormat": "{{ device }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "WebSockets Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 16 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_func_topic_latency_ms", - "interval": "", - "legendFormat": "{{ device }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "End-to-End Function Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": false, - "schemaVersion": 25, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Pulsar / Pulsar Monitor", - "uid": "j55zWy2Mk", - "version": 5 - } \ No newline at end of file From b7857177f4cf9258c164ed3f86b6372c23d289db Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Fri, 28 Jun 2024 01:55:06 -0500 Subject: [PATCH 02/69] [improve] grafana jvm dashboard (#173) Rename `heap size` label to `committed` to match the metric being used. --- helm/kaap-stack/grafana-dashboards/jvm.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/helm/kaap-stack/grafana-dashboards/jvm.json b/helm/kaap-stack/grafana-dashboards/jvm.json index 337518a2..80b72513 100644 --- a/helm/kaap-stack/grafana-dashboards/jvm.json +++ b/helm/kaap-stack/grafana-dashboards/jvm.json @@ -683,7 +683,7 @@ "hide": false, "interval": "", "intervalFactor": 2, - "legendFormat": "Heap size", + "legendFormat": "Committed", "metric": "jvm_memory_bytes_committed", "refId": "A", "step": 20 @@ -1168,7 +1168,7 @@ "hide": false, "interval": "", "intervalFactor": 2, - "legendFormat": "Heap size", + "legendFormat": "Committed", "metric": "jvm_memory_bytes_committed", "refId": "A", "step": 20 @@ -1653,7 +1653,7 @@ "hide": false, "interval": "", "intervalFactor": 2, - "legendFormat": "Heap size", + "legendFormat": "Committed", "metric": "jvm_memory_bytes_committed", "refId": "A", "step": 20 From f826f8f24b2a0395959a7207be768024ec64b83c Mon Sep 17 00:00:00 2001 From: Joseph Glanville Date: Thu, 15 Aug 2024 04:13:09 +0700 Subject: [PATCH 03/69] Fix pulsarAdminUrl supplied to Kubernetes runtime to correctly handle plaintext/TLS (#176) Merged, thanks! --- .../controllers/function/FunctionsWorkerResourcesFactory.java | 3 +-- .../controllers/function/FunctionsWorkerControllerTest.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java index 8aa4de51..a8478c0d 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java @@ -298,8 +298,7 @@ public void patchConfigMap() { "pulsarRootDir", "/pulsar", "submittingInsidePod", true, "pulsarServiceUrl", brokerServiceUrl, - "pulsarAdminUrl", "https://%s.%s:6750/" - .formatted(resourceName, getServiceDnsSuffix()), + "pulsarAdminUrl", getFunctionsWorkerServiceUrl(), "percentMemoryPadding", 10) ); break; diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerControllerTest.java index aa68fd23..a6e78ac7 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerControllerTest.java @@ -975,7 +975,7 @@ public void testRuntimeK8s() throws Exception { LinkedHashMap functionRuntimeFactoryConfigs = new LinkedHashMap<>(); functionRuntimeFactoryConfigs.put("jobNamespace", "ns"); functionRuntimeFactoryConfigs.put("percentMemoryPadding", 10); - functionRuntimeFactoryConfigs.put("pulsarAdminUrl", "https://pul-function.ns.svc.cluster.local:6750/"); + functionRuntimeFactoryConfigs.put("pulsarAdminUrl", "http://pul-function-ca.ns.svc.cluster.local:6750"); functionRuntimeFactoryConfigs.put("pulsarDockerImageName", "apachepulsar/pulsar:global"); functionRuntimeFactoryConfigs.put("pulsarRootDir", "/pulsar"); functionRuntimeFactoryConfigs.put("pulsarServiceUrl", "pulsar://pul-broker.ns.svc.cluster.local:6650/"); From 31c533159185fc085df4c7bc35463068414ae937 Mon Sep 17 00:00:00 2001 From: mukesh-ctds <151806568+mukesh-ctds@users.noreply.github.com> Date: Mon, 2 Sep 2024 18:25:58 +0530 Subject: [PATCH 04/69] Added JAVA_OPTS as an env variable to allow additional customization by appending existing options (#179) * Added JAVA_OPTS as an env variable * Updated JAVA_OPTS --- helm/kaap-stack/values.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/helm/kaap-stack/values.yaml b/helm/kaap-stack/values.yaml index 0e4490c3..5c69ed1a 100644 --- a/helm/kaap-stack/values.yaml +++ b/helm/kaap-stack/values.yaml @@ -397,3 +397,5 @@ bkvm: value: pulsar - name: BKVM_user.1.role value: Admin + - name: JAVA_OPTS + value: "-Xmx3g -Xms3g" From 78e66757aa7107cca783bc36d878f98483ca8c0a Mon Sep 17 00:00:00 2001 From: mukesh-ctds Date: Wed, 4 Sep 2024 11:38:57 +0000 Subject: [PATCH 05/69] [maven-release-plugin] prepare release operator-0.3.1 --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 4 ++-- tests/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index ba2674f4..bbd4a791 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1-SNAPSHOT + 0.3.1 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 2110ff85..e1a8bfcf 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1-SNAPSHOT + 0.3.1 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index 3424c350..536ff803 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1-SNAPSHOT + 0.3.1 4.0.0 diff --git a/pom.xml b/pom.xml index edbdf0d3..56763fa8 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.3.1-SNAPSHOT + 0.3.1 operator-common operator @@ -33,7 +33,7 @@ scm:git:https://github.com/datastax/kaap.git scm:git:https://github.com/datastax/kaap.git https://github.com/datastax/kaap - HEAD + operator-0.3.1 true diff --git a/tests/pom.xml b/tests/pom.xml index 85e84b4c..f56b6ab0 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1-SNAPSHOT + 0.3.1 4.0.0 From 2b8a104333d21cd5221727be545e27297ae5895c Mon Sep 17 00:00:00 2001 From: mukesh-ctds Date: Wed, 4 Sep 2024 11:58:17 +0000 Subject: [PATCH 06/69] Revert "[maven-release-plugin] prepare release operator-0.3.1" This reverts commit 78e66757aa7107cca783bc36d878f98483ca8c0a. --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 4 ++-- tests/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index bbd4a791..ba2674f4 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1 + 0.3.1-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index e1a8bfcf..2110ff85 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1 + 0.3.1-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index 536ff803..3424c350 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1 + 0.3.1-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 56763fa8..edbdf0d3 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.3.1 + 0.3.1-SNAPSHOT operator-common operator @@ -33,7 +33,7 @@ scm:git:https://github.com/datastax/kaap.git scm:git:https://github.com/datastax/kaap.git https://github.com/datastax/kaap - operator-0.3.1 + HEAD true diff --git a/tests/pom.xml b/tests/pom.xml index f56b6ab0..85e84b4c 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1 + 0.3.1-SNAPSHOT 4.0.0 From a83670b35d59776724b73a42c9ce8b1081d96113 Mon Sep 17 00:00:00 2001 From: mukesh-ctds Date: Wed, 4 Sep 2024 12:02:48 +0000 Subject: [PATCH 07/69] [maven-release-plugin] prepare release operator-0.3.1 --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 4 ++-- tests/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index ba2674f4..bbd4a791 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1-SNAPSHOT + 0.3.1 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 2110ff85..e1a8bfcf 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1-SNAPSHOT + 0.3.1 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index 3424c350..536ff803 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1-SNAPSHOT + 0.3.1 4.0.0 diff --git a/pom.xml b/pom.xml index edbdf0d3..56763fa8 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.3.1-SNAPSHOT + 0.3.1 operator-common operator @@ -33,7 +33,7 @@ scm:git:https://github.com/datastax/kaap.git scm:git:https://github.com/datastax/kaap.git https://github.com/datastax/kaap - HEAD + operator-0.3.1 true diff --git a/tests/pom.xml b/tests/pom.xml index 85e84b4c..f56b6ab0 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1-SNAPSHOT + 0.3.1 4.0.0 From 53862ce97db9db85764b705c71e8064f05124789 Mon Sep 17 00:00:00 2001 From: mukesh-ctds Date: Wed, 4 Sep 2024 12:03:10 +0000 Subject: [PATCH 08/69] [maven-release-plugin] prepare for next development iteration --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 4 ++-- tests/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index bbd4a791..1867eb5a 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1 + 0.3.2-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index e1a8bfcf..203d4628 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1 + 0.3.2-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index 536ff803..b19afa41 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1 + 0.3.2-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 56763fa8..31320dc8 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.3.1 + 0.3.2-SNAPSHOT operator-common operator @@ -33,7 +33,7 @@ scm:git:https://github.com/datastax/kaap.git scm:git:https://github.com/datastax/kaap.git https://github.com/datastax/kaap - operator-0.3.1 + HEAD true diff --git a/tests/pom.xml b/tests/pom.xml index f56b6ab0..6542be6d 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.1 + 0.3.2-SNAPSHOT 4.0.0 From 2d4f8c194d425fbb22bc07b88386116ac7c20891 Mon Sep 17 00:00:00 2001 From: mukesh-ctds Date: Wed, 4 Sep 2024 12:21:15 +0000 Subject: [PATCH 09/69] Release kaap chart 0.3.1 --- helm/kaap/Chart.yaml | 2 +- release/release.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 3a76e637..5ba313e3 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.0 +version: 0.3.1 diff --git a/release/release.sh b/release/release.sh index 195a4a37..ccfab1e0 100755 --- a/release/release.sh +++ b/release/release.sh @@ -78,7 +78,7 @@ if [[ "$artifact" == "operator" ]]; then mvn release:prepare -DreleaseVersion=$new_version -Dresume=false -Pskip-crds echo "$new_version released." elif [[ "$artifact" == "kaap-chart" ]]; then - replace_version_in_chart helm/kaap/Chart.yaml $new_version + #replace_version_in_chart helm/kaap/Chart.yaml $new_version git commit -am "Release kaap chart $new_version" git tag kaap-$new_version git push From 145abd44ad0f8755ae7ae37a43aba5f4a8e81b60 Mon Sep 17 00:00:00 2001 From: mukesh-ctds Date: Wed, 4 Sep 2024 12:23:55 +0000 Subject: [PATCH 10/69] Revert "Release kaap chart 0.3.1" This reverts commit 2d4f8c194d425fbb22bc07b88386116ac7c20891. --- helm/kaap/Chart.yaml | 2 +- release/release.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 5ba313e3..3a76e637 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.1 +version: 0.3.0 diff --git a/release/release.sh b/release/release.sh index ccfab1e0..195a4a37 100755 --- a/release/release.sh +++ b/release/release.sh @@ -78,7 +78,7 @@ if [[ "$artifact" == "operator" ]]; then mvn release:prepare -DreleaseVersion=$new_version -Dresume=false -Pskip-crds echo "$new_version released." elif [[ "$artifact" == "kaap-chart" ]]; then - #replace_version_in_chart helm/kaap/Chart.yaml $new_version + replace_version_in_chart helm/kaap/Chart.yaml $new_version git commit -am "Release kaap chart $new_version" git tag kaap-$new_version git push From fc6886444175b956873d454aae44f2cdf5afc0a3 Mon Sep 17 00:00:00 2001 From: mukesh-ctds Date: Wed, 4 Sep 2024 12:27:25 +0000 Subject: [PATCH 11/69] Release kaap chart 0.3.1 --- helm/kaap/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 3a76e637..5ba313e3 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.0 +version: 0.3.1 From 76da0a90ca1d26a792d5ea4d97d8a6c7ef19e06a Mon Sep 17 00:00:00 2001 From: mukesh-ctds Date: Wed, 4 Sep 2024 12:29:43 +0000 Subject: [PATCH 12/69] Release kaap stack chart 0.3.1 --- helm/kaap-stack/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index b02a155c..39d6dcf4 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.0 +version: 0.3.1 dependencies: - name: kaap version: 0.3.x From b76c8ebb8b36b1de7c3128015558675fc195ebf7 Mon Sep 17 00:00:00 2001 From: Chris Bartholomew Date: Wed, 11 Dec 2024 10:13:07 -0500 Subject: [PATCH 13/69] Upgrade kube-prometheus-stack to latest version (#180) --- helm/kaap-stack/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index 39d6dcf4..12aadd82 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -25,7 +25,7 @@ dependencies: version: 0.3.x repository: file://../kaap - name: kube-prometheus-stack - version: 41.x.x + version: 62.3.0 repository: https://prometheus-community.github.io/helm-charts condition: kube-prometheus-stack.enabled - name: keycloak From 3bf7fee10bb2843577cdbec3c7ad7b9d6058a90a Mon Sep 17 00:00:00 2001 From: rithick-ctds Date: Tue, 4 Mar 2025 18:57:57 +0530 Subject: [PATCH 14/69] Add github workflow to build and push arm64 variants (#184) --- .github/workflows/ci-release-operator.yaml | 43 +++++++++++++++++----- .github/workflows/ci-test.yaml | 2 +- helm/kaap/templates/operator.yaml | 12 ++++++ helm/kaap/values.yaml | 2 + operator/Dockerfile | 18 +++++++++ 5 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 operator/Dockerfile diff --git a/.github/workflows/ci-release-operator.yaml b/.github/workflows/ci-release-operator.yaml index 5a23290b..9ebc6383 100644 --- a/.github/workflows/ci-release-operator.yaml +++ b/.github/workflows/ci-release-operator.yaml @@ -4,6 +4,12 @@ on: push: tags: - 'operator-*' + workflow_dispatch: # Manual Trigger + inputs: + docker_tag: + description: 'Docker tag to use' + required: true + default: 'dev' jobs: release-operator: @@ -32,18 +38,37 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Get the tag & Build Operator run: | - mvn clean install -DskipTests -Pskip-crds - docker_tag=${GITHUB_REF/refs\/tags\/operator-/} - - docker tag datastax/kaap:latest-dev datastax/kaap:$docker_tag - docker tag datastax/kaap:latest-dev datastax/kaap:latest - docker push datastax/kaap:$docker_tag - docker push datastax/kaap:latest + OP_TAG=${GITHUB_REF/refs\/tags\/operator-/} + MANUAL_WORKFLOW_TAG=${{ inputs.docker_tag }} + if [[ $MANUAL_WORKFLOW_TAG != "" ]]; then + TAGS=docker.io/datastax/kaap:${{ inputs.docker_tag }} + else + TAGS=docker.io/datastax/kaap:${{ inputs.docker_tag }},docker.io/datastax/kaap:latest + fi + echo "TAGS=${TAGS}" >> "$GITHUB_ENV" + echo "Using tag $TAG" + + mvn clean install -DskipTests -Pskip-crds -Pskip-docker + + - name: Build and push + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64,linux/arm64 + push: true + context: operator + tags: docker.io/datastax/kaap:${{ env.TAGS }} - uses: ncipollo/release-action@v1 + if: ${{ inputs.docker_tag == '' }} # If not manual workflow with: artifacts: "migration-tool/target/kaap-migration-tool-*.jar,helm/kaap/crds/*.yml" token: ${{ secrets.GITHUB_TOKEN }} - generateReleaseNotes: true \ No newline at end of file + generateReleaseNotes: true diff --git a/.github/workflows/ci-test.yaml b/.github/workflows/ci-test.yaml index 2e7efc70..5518e198 100644 --- a/.github/workflows/ci-test.yaml +++ b/.github/workflows/ci-test.yaml @@ -127,7 +127,7 @@ jobs: -Dkaap.tests.env.existing.k3s.agents='${{ matrix.num_agents }}' - name: Upload Surefire reports - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: failure() continue-on-error: true with: diff --git a/helm/kaap/templates/operator.yaml b/helm/kaap/templates/operator.yaml index 8b2ba748..48196f4e 100644 --- a/helm/kaap/templates/operator.yaml +++ b/helm/kaap/templates/operator.yaml @@ -48,6 +48,18 @@ spec: {{- include "kaap.selectorLabels" . | nindent 8 }} namespace: {{ .Release.Namespace }} spec: + {{- if and (.Values.nodeSelector) (not .Values.operator.nodeSelector) }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.operator.nodeSelector }} + nodeSelector: +{{ toYaml .Values.operator.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.operator.tolerations }} + tolerations: +{{ toYaml .Values.operator.tolerations | indent 8 }} + {{- end }} containers: - env: - name: KUBERNETES_NAMESPACE diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 9b266d5f..2bdaaca9 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -40,6 +40,8 @@ operator: image: datastax/kaap:0.3.0 imagePullPolicy: IfNotPresent replicas: 1 + nodeSelector: {} + tolerations: [] livenessProbe: failureThreshold: 3 periodSeconds: 30 diff --git a/operator/Dockerfile b/operator/Dockerfile new file mode 100644 index 00000000..95d2ba69 --- /dev/null +++ b/operator/Dockerfile @@ -0,0 +1,18 @@ +FROM registry.access.redhat.com/ubi8/openjdk-17:1.21 + +ENV LANGUAGE='en_US:en' + +# We make four distinct layers so if there are application changes the library layers can be re-used +COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/ +COPY --chown=185 target/quarkus-app/*.jar /deployments/ +COPY --chown=185 target/quarkus-app/app/ /deployments/app/ +COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/ + +EXPOSE 8080 +USER 185 + +ENV JAVA_OPTS_APPEND="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" +ENV JAVA_APP_JAR="/deployments/quarkus-run.jar" + +WORKDIR /deployments +ENTRYPOINT [ "/bin/java", "-jar", "quarkus-run.jar" ] From b02db283e1102896fbbeb4c125b48616ae79402f Mon Sep 17 00:00:00 2001 From: rithick-ctds Date: Tue, 4 Mar 2025 19:02:47 +0530 Subject: [PATCH 15/69] Fix log line in CD op (#185) --- .github/workflows/ci-release-operator.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-release-operator.yaml b/.github/workflows/ci-release-operator.yaml index 9ebc6383..8816a1a6 100644 --- a/.github/workflows/ci-release-operator.yaml +++ b/.github/workflows/ci-release-operator.yaml @@ -54,7 +54,7 @@ jobs: TAGS=docker.io/datastax/kaap:${{ inputs.docker_tag }},docker.io/datastax/kaap:latest fi echo "TAGS=${TAGS}" >> "$GITHUB_ENV" - echo "Using tag $TAG" + echo "Using tags $TAGS" mvn clean install -DskipTests -Pskip-crds -Pskip-docker From de70187c6525aa1669e7380ea556d0a1d7cddbc4 Mon Sep 17 00:00:00 2001 From: rithick-ctds Date: Tue, 4 Mar 2025 19:08:57 +0530 Subject: [PATCH 16/69] Fix final docker tags (#186) * Fix final docker tags * Use local variables --- .github/workflows/ci-release-operator.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-release-operator.yaml b/.github/workflows/ci-release-operator.yaml index 8816a1a6..e35ab6b6 100644 --- a/.github/workflows/ci-release-operator.yaml +++ b/.github/workflows/ci-release-operator.yaml @@ -49,9 +49,9 @@ jobs: OP_TAG=${GITHUB_REF/refs\/tags\/operator-/} MANUAL_WORKFLOW_TAG=${{ inputs.docker_tag }} if [[ $MANUAL_WORKFLOW_TAG != "" ]]; then - TAGS=docker.io/datastax/kaap:${{ inputs.docker_tag }} + TAGS="docker.io/datastax/kaap:$MANUAL_WORKFLOW_TAG" else - TAGS=docker.io/datastax/kaap:${{ inputs.docker_tag }},docker.io/datastax/kaap:latest + TAGS="docker.io/datastax/kaap:$OP_TAG,docker.io/datastax/kaap:latest" fi echo "TAGS=${TAGS}" >> "$GITHUB_ENV" echo "Using tags $TAGS" @@ -64,7 +64,7 @@ jobs: platforms: linux/amd64,linux/arm64 push: true context: operator - tags: docker.io/datastax/kaap:${{ env.TAGS }} + tags: ${{ env.TAGS }} - uses: ncipollo/release-action@v1 if: ${{ inputs.docker_tag == '' }} # If not manual workflow From 9c2b79a32279ed57942c84c1657303ce2450f2e6 Mon Sep 17 00:00:00 2001 From: rithick-ctds Date: Tue, 25 Mar 2025 18:45:56 +0530 Subject: [PATCH 17/69] Integration Testing Fixes. (#188) * Fix Integration Tests * Fix LICENSE Checks --- .github/workflows/ci-test.yaml | 6 ++++-- pom.xml | 1 + tests/pom.xml | 2 +- .../datastax/oss/kaap/tests/BaseK8sEnvTest.java | 7 ++++++- .../oss/kaap/tests/BasePulsarClusterTest.java | 3 ++- .../oss/kaap/tests/BkDownScalingTest.java | 2 +- .../oss/kaap/tests/BrokerAutoScalingTest.java | 3 ++- .../oss/kaap/tests/env/ExistingK8sEnv.java | 2 +- .../kaap/tests/env/k3s/AbstractK3sContainer.java | 4 ++-- .../tests/env/k3s/LocalRegistryContainer.java | 2 +- .../kaap/tests/env/k3s/ReusableK3sContainer.java | 2 +- .../oss/kaap/tests/helm/BaseHelmTest.java | 16 ++++++++++++++-- 12 files changed, 36 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci-test.yaml b/.github/workflows/ci-test.yaml index 5518e198..65b0740d 100644 --- a/.github/workflows/ci-test.yaml +++ b/.github/workflows/ci-test.yaml @@ -7,7 +7,8 @@ on: jobs: build-and-unit-test: name: Build and test - runs-on: ubuntu-20.04 + runs-on: + labels: kaap timeout-minutes: 60 steps: - name: checkout @@ -42,7 +43,8 @@ jobs: integration-tests: name: Integration tests - ${{ matrix.name }} - runs-on: ubuntu-20.04 + runs-on: + labels: kaap timeout-minutes: 60 strategy: fail-fast: false diff --git a/pom.xml b/pom.xml index 31320dc8..c51f41ba 100644 --- a/pom.xml +++ b/pom.xml @@ -309,6 +309,7 @@
src/license-header.txt
helm/kaap/crds/** + **/Dockerfile diff --git a/tests/pom.xml b/tests/pom.xml index 6542be6d..e11f66da 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -27,7 +27,7 @@ tests - 1.4.3 + 1.4.9 diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java index 6b75c6fd..0a57ca1d 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java @@ -69,6 +69,7 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import java.util.stream.Collectors; import lombok.SneakyThrows; @@ -233,6 +234,9 @@ private String simulateHelmRendering(List allRbac) { vars.put(".Values.operator.readinessProbe.periodSeconds", "30"); vars.put(".Values.operator.readinessProbe.successThreshold", "1"); vars.put(".Values.operator.readinessProbe.timeoutSeconds", "10"); + vars.put(".Values.nodeSelector", " {}"); + vars.put(".Values.operator.nodeSelector", " {}"); + vars.put(".Values.operator.tolerations", " []"); vars.put("include \"kaap.name\" .", "kaap"); vars.put("include \"kaap.roleName\" .", "kaap"); vars.put("include \"kaap.roleBindingName\" .", "kaap-role-binding"); @@ -252,6 +256,7 @@ private String simulateHelmRendering(List allRbac) { } for (Map.Entry entry : vars.entrySet()) { l = l.replace("{{ %s }}".formatted(entry.getKey()), entry.getValue()); + l = l.replace("{{ toYaml %s | indent 8 }}".formatted(entry.getKey()), entry.getValue()); l = l.replace("{{- %s }}".formatted(entry.getKey()), entry.getValue()); } result += l + System.lineSeparator(); @@ -568,7 +573,7 @@ protected String getOperatorPodName() { } protected void awaitOperatorRunning() { - Awaitility.await().untilAsserted(() -> { + Awaitility.await().atMost(15, TimeUnit.MINUTES).untilAsserted(() -> { final List pods = client.pods() .inNamespace(namespace) .withLabel("app.kubernetes.io/name", "kaap").list().getItems(); diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/BasePulsarClusterTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/BasePulsarClusterTest.java index 802dad76..3f3a12bf 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/BasePulsarClusterTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/BasePulsarClusterTest.java @@ -237,6 +237,7 @@ protected void applyPulsarCluster(String content) { .createOrReplace(); Awaitility.await("waiting for pulsar cluster to be ready") + .atMost(15, TimeUnit.MINUTES) .with().pollInterval(10, TimeUnit.SECONDS) .until(() -> { if (isCrdReady(PulsarCluster.class, pulsarCluster.getMetadata().getName())) { @@ -546,7 +547,7 @@ protected void assertSourceInstalled() { return false; }); - Awaitility.await().untilAsserted(() -> { + Awaitility.await().atMost(15, TimeUnit.MINUTES).untilAsserted(() -> { printRunningPods(); Assert.assertTrue( client.pods().inNamespace(namespace).withName("pf-public-default-generator-0").isReady()); diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/BkDownScalingTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/BkDownScalingTest.java index 747a76c0..49463698 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/BkDownScalingTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/BkDownScalingTest.java @@ -132,7 +132,7 @@ public void testBkDownscaling() throws Exception { log.info("Triggering audit"); triggerAudit(bookiePod); - Awaitility.waitAtMost(DEFAULT_AWAIT_SECONDS, TimeUnit.SECONDS).untilAsserted(() -> { + Awaitility.waitAtMost(15, TimeUnit.MINUTES).untilAsserted(() -> { long count = client.persistentVolumeClaims() .inNamespace(namespace) .resources() diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/BrokerAutoScalingTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/BrokerAutoScalingTest.java index ec57f51b..4a338d14 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/BrokerAutoScalingTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/BrokerAutoScalingTest.java @@ -22,6 +22,7 @@ import io.fabric8.kubernetes.api.model.apps.StatefulSetStatus; import java.util.LinkedHashMap; import java.util.Map; +import java.util.concurrent.TimeUnit; import lombok.extern.slf4j.Slf4j; import org.awaitility.Awaitility; import org.testng.Assert; @@ -74,7 +75,7 @@ public void testAutoscaling() throws Exception { execInBastionPod(cmd); - Awaitility.await().until(() -> { + Awaitility.await().atMost(15, TimeUnit.MINUTES).until(() -> { final StatefulSetStatus status = client.apps().statefulSets() .inNamespace(namespace) .withName("pulsar-broker-dedicated") diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/env/ExistingK8sEnv.java b/tests/src/test/java/com/datastax/oss/kaap/tests/env/ExistingK8sEnv.java index 0ec95701..cc359da2 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/env/ExistingK8sEnv.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/env/ExistingK8sEnv.java @@ -33,7 +33,7 @@ public class ExistingK8sEnv implements K8sEnv { - public static final DockerImageName HELM_DOCKER_IMAGE = DockerImageName.parse("alpine/helm:3.7.2"); + public static final DockerImageName HELM_DOCKER_IMAGE = DockerImageName.parse("alpine/helm:3.17.2"); private static final String KUBECONFIG_CONTEXT = System.getProperty("kaap.tests.existingenv.kubeconfig.context"); private static final String STORAGECLASS = diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/AbstractK3sContainer.java b/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/AbstractK3sContainer.java index ae1efcc1..107763cd 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/AbstractK3sContainer.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/AbstractK3sContainer.java @@ -31,8 +31,8 @@ public abstract class AbstractK3sContainer implements AutoCloseable { public static final KubernetesImageSpec K3S_IMAGE = - new KubernetesImageSpec<>(K3sContainerVersion.VERSION_1_25_0) - .withImage("rancher/k3s:v1.25.3-k3s1"); + new KubernetesImageSpec<>(K3sContainerVersion.VERSION_1_31_0) + .withImage("rancher/k3s:v1.31.6-k3s1"); public abstract CompletableFuture start(); diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/LocalRegistryContainer.java b/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/LocalRegistryContainer.java index ff54ee37..5c5d2240 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/LocalRegistryContainer.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/LocalRegistryContainer.java @@ -31,7 +31,7 @@ public class LocalRegistryContainer> extends GenericContainer { public LocalRegistryContainer() { - super("registry:2.7"); + super("registry:2"); // workaround because withExposedPorts(5000) does not work addFixedExposedPort(nextFreePort(), 5000); withEnv("SETTINGS_FLAVOR", "local"); diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/ReusableK3sContainer.java b/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/ReusableK3sContainer.java index 877d9756..e6584217 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/ReusableK3sContainer.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/ReusableK3sContainer.java @@ -52,7 +52,7 @@ public void beforeStartHelm3(Consumer consumer) { @Override public synchronized Helm3Container helm3() { if (this.helm3 == null) { - this.helm3 = (Helm3Container) (new Helm3Container(DockerImageName.parse("alpine/helm:3.7.2"), + this.helm3 = (Helm3Container) (new Helm3Container(DockerImageName.parse("alpine/helm:3.17.2"), this::getInternalKubeconfig)) .withNetworkMode("container:" + this.getContainerId()); if (helm3ContainerConsumer != null) { diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/BaseHelmTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/BaseHelmTest.java index 687ab041..1dbc1b59 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/BaseHelmTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/BaseHelmTest.java @@ -43,6 +43,7 @@ public class BaseHelmTest extends BasePulsarClusterTest { private static final String HELM_RELEASE_PREFIX = "pothr-"; public static final String HELM_BIND_OPERATOR = "/helm-kaap"; + public static final String HELM_BIND_DEPENDENCY = "/kaap"; public static final String HELM_BIND_STACK = "/helm-kaap-stack"; protected String helmReleaseName; @@ -62,6 +63,7 @@ public void beforeBaseHelmTest() throws Exception { final Path stackPath = Paths.get("..", "helm", "kaap-stack"); helm.withFileSystemBind(operatorPath.toFile().getAbsolutePath(), HELM_BIND_OPERATOR); helm.withFileSystemBind(stackPath.toFile().getAbsolutePath(), HELM_BIND_STACK); + helm.withFileSystemBind(operatorPath.toFile().getAbsolutePath(), HELM_BIND_DEPENDENCY); log.info("loaded helm charts from {} and {}", operatorPath, stackPath); }); } @@ -89,8 +91,18 @@ protected void helmInstall(Chart chart, String values) { helm3Container.copyFileToContainer(Transferable.of(values), "/test-values.yaml"); helm3Container.execInContainer("helm", "delete", helmReleaseName, "-n", namespace); + + // Fix Permissions for kubeconfig issues, no need for check as it can fail or succeed. + helm3Container.execInContainer("chmod go-r /tmp/kindcontainer.kubeconfig".split(" ")); + + final String buildChart = + "helm dependency update %s".formatted(getChartPath(chart)); + final Container.ExecResult setup = helm3Container.execInContainer(buildChart.split(" ")); + if (setup.getExitCode() != 0) { + throw new RuntimeException("Helm Dependency build failed: " + setup.getStderr()); + } final String cmd = - "helm install --debug --timeout 360s %s -n %s %s --values /test-values.yaml".formatted( + "helm install --debug --timeout 900s %s -n %s %s --values /test-values.yaml".formatted( helmReleaseName, namespace, getChartPath(chart)); final Container.ExecResult exec = helm3Container.execInContainer(cmd.split(" ")); if (exec.getExitCode() != 0) { @@ -110,7 +122,7 @@ private static String getChartPath(Chart chart) { protected void helmUpgrade(Chart chart, String values) { env.helmContainer().copyFileToContainer(Transferable.of(values), "/test-values.yaml"); final String cmd = - "helm upgrade %s -n %s %s --values /test-values.yaml" + "helm upgrade --timeout 900s %s -n %s %s --values /test-values.yaml" .formatted(helmReleaseName, namespace, getChartPath(chart)); final Container.ExecResult exec = env.helmContainer().execInContainer(cmd.split(" ")); if (exec.getExitCode() != 0) { From 495c67b2c6b3685c8e50db18c7657bb54e49943c Mon Sep 17 00:00:00 2001 From: rithick-ctds Date: Tue, 25 Mar 2025 21:18:23 +0530 Subject: [PATCH 18/69] Update Operator version to 0.3.3 (#187) Add support for minAvailable in PDB [STREAM-591] --- docs/api-reference.md | 56 +++++++++++++++++++ .../bookkeepers.kaap.oss.datastax.com-v1.yml | 6 ++ .../crds/brokers.kaap.oss.datastax.com-v1.yml | 6 ++ ...ctionsworkers.kaap.oss.datastax.com-v1.yml | 3 + .../crds/proxies.kaap.oss.datastax.com-v1.yml | 6 ++ ...ulsarclusters.kaap.oss.datastax.com-v1.yml | 24 ++++++++ .../zookeepers.kaap.oss.datastax.com-v1.yml | 3 + migration-tool/pom.xml | 2 +- .../specs/BaseSpecGenerator.java | 9 ++- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- .../controllers/BaseResourcesFactory.java | 11 +++- .../oss/kaap/crds/BaseComponentSpec.java | 9 ++- .../configs/PodDisruptionBudgetConfig.java | 2 + pom.xml | 2 +- tests/pom.xml | 2 +- 16 files changed, 137 insertions(+), 8 deletions(-) diff --git a/docs/api-reference.md b/docs/api-reference.md index 9b4e1fc3..79145baa 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -17016,6 +17016,13 @@ Pod disruption budget configuration. Number of maxUnavailable pods.
false + + minAvailable + integer + + Number of minAvailable pods.
+ + false @@ -23600,6 +23607,13 @@ Pod disruption budget configuration. Number of maxUnavailable pods.
false + + minAvailable + integer + + Number of minAvailable pods.
+ + false @@ -35276,6 +35290,13 @@ Pod disruption budget configuration. Number of maxUnavailable pods.
false + + minAvailable + integer + + Number of minAvailable pods.
+ + false @@ -41919,6 +41940,13 @@ Pod disruption budget configuration. Number of maxUnavailable pods.
false + + minAvailable + integer + + Number of minAvailable pods.
+ + false @@ -53279,6 +53307,13 @@ Pod disruption budget configuration. Number of maxUnavailable pods.
false + + minAvailable + integer + + Number of minAvailable pods.
+ + false @@ -63937,6 +63972,13 @@ Pod disruption budget configuration. Number of maxUnavailable pods.
false + + minAvailable + integer + + Number of minAvailable pods.
+ + false @@ -70461,6 +70503,13 @@ Pod disruption budget configuration. Number of maxUnavailable pods.
false + + minAvailable + integer + + Number of minAvailable pods.
+ + false @@ -82180,6 +82229,13 @@ Pod disruption budget configuration. Number of maxUnavailable pods.
false + + minAvailable + integer + + Number of minAvailable pods.
+ + false diff --git a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml index 70f13a8d..b416ead0 100644 --- a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml @@ -2635,6 +2635,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -4812,6 +4815,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean diff --git a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml index 0f0b6e98..d6f48654 100644 --- a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml @@ -2586,6 +2586,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -4729,6 +4732,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean diff --git a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml index a5ff149e..509c765b 100644 --- a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml @@ -2516,6 +2516,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean diff --git a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml index 6d6ca6ab..448ddbed 100644 --- a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml @@ -2581,6 +2581,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -4721,6 +4724,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean diff --git a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml index 416bfbcc..c6e04c33 100644 --- a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml @@ -2581,6 +2581,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -4721,6 +4724,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -6806,6 +6812,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -11348,6 +11357,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -13494,6 +13506,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -15637,6 +15652,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -17832,6 +17850,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean @@ -20009,6 +20030,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean diff --git a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml index e31ddb88..d1d6ea67 100644 --- a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml @@ -1955,6 +1955,9 @@ spec: maxUnavailable: description: Number of maxUnavailable pods. type: integer + minAvailable: + description: Number of minAvailable pods. + type: integer enabled: description: Enable Pdb policy. type: boolean diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index 1867eb5a..085c66a0 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BaseSpecGenerator.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BaseSpecGenerator.java index 91982ba5..2582c873 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BaseSpecGenerator.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BaseSpecGenerator.java @@ -286,8 +286,15 @@ protected static PodDisruptionBudgetConfig createPodDisruptionBudgetConfig( if (podDisruptionBudget != null) { podDisruptionBudgetConfig = PodDisruptionBudgetConfig.builder() .enabled(true) - .maxUnavailable(podDisruptionBudget.getSpec().getMaxUnavailable().getIntVal()) .build(); + if (podDisruptionBudget.getSpec().getMaxUnavailable() != null) { + podDisruptionBudgetConfig.setMaxUnavailable(podDisruptionBudget.getSpec() + .getMaxUnavailable().getIntVal()); + } + if (podDisruptionBudget.getSpec().getMinAvailable() != null) { + podDisruptionBudgetConfig.setMinAvailable(podDisruptionBudget.getSpec() + .getMinAvailable().getIntVal()); + } } return podDisruptionBudgetConfig; } diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 203d4628..fba41817 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index b19afa41..0f8665c0 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java index 65ac3af7..2e4764d1 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java @@ -34,6 +34,7 @@ import io.fabric8.kubernetes.api.model.DeletionPropagation; import io.fabric8.kubernetes.api.model.EnvVar; import io.fabric8.kubernetes.api.model.HasMetadata; +import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.NodeAffinity; import io.fabric8.kubernetes.api.model.OwnerReference; import io.fabric8.kubernetes.api.model.PersistentVolumeClaim; @@ -633,10 +634,18 @@ protected void createPodDisruptionBudgetIfEnabled(PodDisruptionBudgetConfig pdb, .withNewSelector() .withMatchLabels(getMatchLabels(customMatchLabels)) .endSelector() - .withNewMaxUnavailable(pdb.getMaxUnavailable()) .endSpec() .build(); + if (pdb.getMinAvailable() != null) { + pdbResource.getSpec() + .setMinAvailable(new IntOrString(pdb.getMinAvailable())); + } + if (pdb.getMaxUnavailable() != null) { + pdbResource.getSpec() + .setMaxUnavailable(new IntOrString(pdb.getMaxUnavailable())); + } + if (!pdbSupported) { pdbResource.setApiVersion("policy/v1beta1"); } diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java index dbb1af41..9be6d75a 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java @@ -96,8 +96,15 @@ public void applyPdbDefault() { PodDisruptionBudgetConfig defaultPdb = getDefaultPdb(); if (pdb != null) { pdb.setEnabled(ObjectUtils.firstNonNull(pdb.getEnabled(), defaultPdb.getEnabled())); - pdb.setMaxUnavailable(ObjectUtils.firstNonNull(pdb.getMaxUnavailable(), + if (defaultPdb.getMinAvailable() != null || pdb.getMinAvailable() != null) { + pdb.setMinAvailable(ObjectUtils.firstNonNull(pdb.getMinAvailable(), + defaultPdb.getMinAvailable())); + pdb.setMaxUnavailable(null); + } else if (defaultPdb.getMaxUnavailable() != null || pdb.getMaxUnavailable() != null) { + pdb.setMaxUnavailable(ObjectUtils.firstNonNull(pdb.getMaxUnavailable(), defaultPdb.getMaxUnavailable())); + pdb.setMinAvailable(null); + } } else { pdb = defaultPdb; } diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/configs/PodDisruptionBudgetConfig.java b/operator/src/main/java/com/datastax/oss/kaap/crds/configs/PodDisruptionBudgetConfig.java index 70765f74..64f4c281 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/configs/PodDisruptionBudgetConfig.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/configs/PodDisruptionBudgetConfig.java @@ -30,4 +30,6 @@ public class PodDisruptionBudgetConfig { private Boolean enabled; @JsonPropertyDescription("Number of maxUnavailable pods.") private Integer maxUnavailable; + @JsonPropertyDescription("Number of minAvailable pods.") + private Integer minAvailable; } diff --git a/pom.xml b/pom.xml index c51f41ba..6dec0377 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT operator-common operator diff --git a/tests/pom.xml b/tests/pom.xml index e11f66da..d8d95088 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 From 3701084953d49126604d76b2bb893290b02d9b79 Mon Sep 17 00:00:00 2001 From: rithick-ctds Date: Wed, 2 Apr 2025 12:37:53 +0530 Subject: [PATCH 19/69] Add cluster scope via a flag (#189) * Add Cluster Scope * Fix Namespacing permissions * Fix Single namespace * Fix K8s test case * Update pom.xml * Add Test for Cluster Scope operator * Fix Multiple namespaces * Fix Multiple namespaces * Fix Multiple namespaces * Fix Multiple namespaces * Fix Multiple namespaces * Upgrade helm chart to 0.3.2 --- .github/workflows/ci-test.yaml | 4 + helm/kaap-stack/Chart.yaml | 2 +- helm/kaap/Chart.yaml | 2 +- helm/kaap/templates/configmap.yaml | 3 + helm/kaap/templates/pulsar-cluster.yaml | 3 + helm/kaap/templates/rbac/cluster-scoped.yaml | 157 ++++++++++++++++++ .../{rbac.yaml => rbac/namespace-scoped.yaml} | 2 + helm/kaap/values.yaml | 1 + migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- .../controllers/PulsarClusterController.java | 3 +- .../autorecovery/AutorecoveryController.java | 3 +- .../bastion/BastionController.java | 3 +- .../bookkeeper/BookKeeperController.java | 3 +- .../controllers/broker/BrokerController.java | 3 +- .../function/FunctionsWorkerController.java | 3 +- .../controllers/proxy/ProxyController.java | 3 +- .../zookeeper/ZooKeeperController.java | 3 +- pom.xml | 2 +- tests/pom.xml | 2 +- .../oss/kaap/tests/BaseK8sEnvTest.java | 17 +- .../tests/helm/HelmClusterScopedTest.java | 107 ++++++++++++ .../oss/kaap/tests/helm/HelmTest.java | 2 + 24 files changed, 310 insertions(+), 24 deletions(-) create mode 100644 helm/kaap/templates/rbac/cluster-scoped.yaml rename helm/kaap/templates/{rbac.yaml => rbac/namespace-scoped.yaml} (98%) create mode 100644 tests/src/test/java/com/datastax/oss/kaap/tests/helm/HelmClusterScopedTest.java diff --git a/.github/workflows/ci-test.yaml b/.github/workflows/ci-test.yaml index 65b0740d..b5a69dcf 100644 --- a/.github/workflows/ci-test.yaml +++ b/.github/workflows/ci-test.yaml @@ -63,6 +63,10 @@ jobs: group: helm num_agents: 0 setup_helm: "true" + - name: Helm (Cluster Scoped) + group: helm-cluster-scoped + num_agents: 0 + setup_helm: "true" - name: Helm (TLS) group: helm-tls num_agents: 0 diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index 12aadd82..56b3380f 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.1 +version: 0.3.2 dependencies: - name: kaap version: 0.3.x diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 5ba313e3..367861c1 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.1 +version: 0.3.2 diff --git a/helm/kaap/templates/configmap.yaml b/helm/kaap/templates/configmap.yaml index 53c41c72..4b5c29db 100644 --- a/helm/kaap/templates/configmap.yaml +++ b/helm/kaap/templates/configmap.yaml @@ -23,6 +23,9 @@ metadata: labels: {{- include "kaap.labels" . | nindent 4 }} data: +{{- if (not .Values.operator.watchAllNamespaces) }} + QUARKUS_OPERATOR_SDK_NAMESPACES: "JOSDK_WATCH_CURRENT" +{{- end}} QUARKUS_LOG_CATEGORY__COM_DATASTAX_OSS_KAAP__LEVEL: {{ .Values.operator.config.logLevel }} {{- range $key, $val := $.Values.operator.config.quarkus }} {{ printf "QUARKUS_%s" ($key | replace "-" "." | replace "\"" "." | snakecase | upper | replace "." "_" ) }}: {{ $val | toString | replace "\"" "" | trim | quote }} diff --git a/helm/kaap/templates/pulsar-cluster.yaml b/helm/kaap/templates/pulsar-cluster.yaml index 480a8363..716c0bb7 100644 --- a/helm/kaap/templates/pulsar-cluster.yaml +++ b/helm/kaap/templates/pulsar-cluster.yaml @@ -21,6 +21,9 @@ apiVersion: kaap.oss.datastax.com/v1beta1 kind: PulsarCluster metadata: name: {{ .Values.cluster.spec.global.name | quote }} +{{- if .Values.cluster.namespace }} + namespace: {{ .Values.cluster.namespace | quote }} +{{- end }} spec: {{- toYaml .Values.cluster.spec | nindent 2 }} {{- end }} \ No newline at end of file diff --git a/helm/kaap/templates/rbac/cluster-scoped.yaml b/helm/kaap/templates/rbac/cluster-scoped.yaml new file mode 100644 index 00000000..7d4a677f --- /dev/null +++ b/helm/kaap/templates/rbac/cluster-scoped.yaml @@ -0,0 +1,157 @@ +# +# +# Copyright DataStax, Inc. +# +# 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. +# + +{{- if .Values.operator.watchAllNamespaces }} +{{- if .Values.rbac.create }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ include "kaap.roleName" . }} +rules: + - apiGroups: + - "storage.k8s.io" + resources: + - storageclasses + verbs: + - "*" + - apiGroups: + - apps + resources: + - deployments + - daemonsets + - replicasets + - statefulsets + verbs: + - "*" + - apiGroups: + - "" + resources: + - namespaces + verbs: + - get + - watch + - apiGroups: + - "" + resources: + - pods + - configmaps + - services + - serviceaccounts + - secrets + - persistentvolumes + - persistentvolumeclaims + verbs: + - '*' + - apiGroups: + - "" + resources: + - pods/exec + verbs: + - 'get' # java client uses GET before executing to a pod + - 'create' + - apiGroups: + - "batch" + resources: + - jobs + verbs: + - '*' + - apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - "*" + - apiGroups: + - "apiextensions.k8s.io" + resources: + - customresourcedefinitions + verbs: + - '*' + - apiGroups: + - "rbac.authorization.k8s.io" + resources: + - roles + - rolebindings + verbs: + - '*' + - apiGroups: + - "metrics.k8s.io" + resources: + - pods + verbs: + - "*" + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - "*" + - apiGroups: + - kaap.oss.datastax.com + resources: + - pulsarclusters + - pulsarclusters/status + - pulsarclusters/finalizers + - zookeepers + - zookeepers/status + - zookeepers/finalizers + - bookkeepers + - bookkeepers/status + - bookkeepers/finalizers + - brokers + - brokers/status + - brokers/finalizers + - proxies + - proxies/status + - proxies/finalizers + - autorecoveries + - autorecoveries/status + - autorecoveries/finalizers + - bastions + - bastions/status + - bastions/finalizers + - functionsworkers + - functionsworkers/status + - functionsworkers/finalizers + verbs: + - "*" + - apiGroups: + - "cert-manager.io" + resources: + - issuers + - certificates + verbs: + - create + - get + - update + - list +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ include "kaap.roleBindingName" . }} +roleRef: + kind: ClusterRole + apiGroup: rbac.authorization.k8s.io + name: {{ include "kaap.roleName" . }} +subjects: + - kind: ServiceAccount + name: {{ include "kaap.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end }} +{{- end }} diff --git a/helm/kaap/templates/rbac.yaml b/helm/kaap/templates/rbac/namespace-scoped.yaml similarity index 98% rename from helm/kaap/templates/rbac.yaml rename to helm/kaap/templates/rbac/namespace-scoped.yaml index 66be411c..cbe4fc6f 100644 --- a/helm/kaap/templates/rbac.yaml +++ b/helm/kaap/templates/rbac/namespace-scoped.yaml @@ -15,6 +15,7 @@ # limitations under the License. # +{{- if (not .Values.operator.watchAllNamespaces) }} {{- if .Values.rbac.create }} --- apiVersion: rbac.authorization.k8s.io/v1 @@ -174,3 +175,4 @@ subjects: name: {{ include "kaap.serviceAccountName" . }} namespace: {{ .Release.Namespace }} {{- end }} +{{- end }} diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 2bdaaca9..08934b0e 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -37,6 +37,7 @@ fullnameOverride: "" operator: enabled: true + watchAllNamespaces: false image: datastax/kaap:0.3.0 imagePullPolicy: IfNotPresent replicas: 1 diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index 085c66a0..c43051bd 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.3-SNAPSHOT + 0.3.4-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index fba41817..d759a21a 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.3-SNAPSHOT + 0.3.4-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index 0f8665c0..e2d56bef 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.3-SNAPSHOT + 0.3.4-SNAPSHOT 4.0.0 diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/PulsarClusterController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/PulsarClusterController.java index 67b4e1d5..c8dc3742 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/PulsarClusterController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/PulsarClusterController.java @@ -55,7 +55,6 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.MixedOperation; import io.fabric8.kubernetes.client.dsl.Resource; -import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.quarkus.runtime.ShutdownEvent; @@ -68,7 +67,7 @@ import lombok.SneakyThrows; import lombok.extern.jbosslog.JBossLog; -@ControllerConfiguration(namespaces = Constants.WATCH_CURRENT_NAMESPACE, name = "pulsar-cluster-app") +@ControllerConfiguration(name = "pulsar-cluster-app") @JBossLog @ApplicationScoped public class PulsarClusterController extends AbstractController { diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryController.java index 4d428350..dafa9c95 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryController.java @@ -21,14 +21,13 @@ import com.datastax.oss.kaap.crds.autorecovery.AutorecoveryFullSpec; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import java.util.List; import lombok.extern.jbosslog.JBossLog; -@ControllerConfiguration(namespaces = Constants.WATCH_CURRENT_NAMESPACE, name = "pulsar-autorecovery-controller") +@ControllerConfiguration(name = "pulsar-autorecovery-controller") @JBossLog public class AutorecoveryController extends AbstractController { diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionController.java index 3223f8e3..a1717f23 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionController.java @@ -21,14 +21,13 @@ import com.datastax.oss.kaap.crds.bastion.BastionFullSpec; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import java.util.List; import lombok.extern.jbosslog.JBossLog; -@ControllerConfiguration(namespaces = Constants.WATCH_CURRENT_NAMESPACE, name = "pulsar-bastion-controller") +@ControllerConfiguration(name = "pulsar-bastion-controller") @JBossLog public class BastionController extends AbstractController { diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperController.java index 6f2f2779..7889b1f7 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperController.java @@ -34,7 +34,6 @@ import io.fabric8.kubernetes.api.model.OwnerReference; import io.fabric8.kubernetes.api.model.apps.StatefulSet; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.quarkus.runtime.ShutdownEvent; import java.util.ArrayList; @@ -49,7 +48,7 @@ import lombok.extern.jbosslog.JBossLog; -@ControllerConfiguration(namespaces = Constants.WATCH_CURRENT_NAMESPACE, name = "pulsar-bk-controller") +@ControllerConfiguration(name = "pulsar-bk-controller") @JBossLog public class BookKeeperController extends AbstractResourceSetsController { diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyController.java index 98ac16bb..db201779 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyController.java @@ -28,7 +28,6 @@ import io.fabric8.kubernetes.api.model.OwnerReference; import io.fabric8.kubernetes.api.model.apps.Deployment; import io.fabric8.kubernetes.client.KubernetesClient; -import io.javaoperatorsdk.operator.api.reconciler.Constants; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import java.util.ArrayList; import java.util.HashMap; @@ -41,7 +40,7 @@ import lombok.extern.jbosslog.JBossLog; -@ControllerConfiguration(namespaces = Constants.WATCH_CURRENT_NAMESPACE, name = "pulsar-proxy-controller") +@ControllerConfiguration(name = "pulsar-proxy-controller") @JBossLog public class ProxyController extends AbstractResourceSetsController { diff --git a/pom.xml b/pom.xml index 6dec0377..aacbf48b 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.3.3-SNAPSHOT + 0.3.4-SNAPSHOT operator-common operator diff --git a/tests/pom.xml b/tests/pom.xml index d8d95088..caa62d0c 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.3-SNAPSHOT + 0.3.4-SNAPSHOT 4.0.0 diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java index 0a57ca1d..b93457c3 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java @@ -34,6 +34,7 @@ import io.fabric8.certmanager.api.model.v1.CertificateRequest; import io.fabric8.certmanager.api.model.v1.Issuer; import io.fabric8.kubernetes.api.model.HasMetadata; +import io.fabric8.kubernetes.api.model.Namespace; import io.fabric8.kubernetes.api.model.NamespaceBuilder; import io.fabric8.kubernetes.api.model.Node; import io.fabric8.kubernetes.api.model.ObjectMeta; @@ -186,7 +187,7 @@ public void onClose(WatcherException cause) { private String getRbacManifest() throws IOException { List allRbac = new ArrayList<>(); allRbac.addAll(Files.readAllLines( - Paths.get(OPERATOR_CHART_PATH.toFile().getAbsolutePath(), "templates", "rbac.yaml"))); + Paths.get(OPERATOR_CHART_PATH.toFile().getAbsolutePath(), "templates", "rbac", "namespace-scoped.yaml"))); allRbac.add("---"); allRbac.addAll(Files.readAllLines( Paths.get(OPERATOR_CHART_PATH.toFile().getAbsolutePath(), "templates", "serviceaccount.yaml"))); @@ -208,6 +209,7 @@ private String getOperatorDeploymentManifest() throws IOException { labels: {{- include "kaap.labels" . | nindent 4 }} data: + QUARKUS_OPERATOR_SDK_NAMESPACES: "JOSDK_WATCH_CURRENT" QUARKUS_LOG_CATEGORY__COM_DATASTAX_OSS_KAAP__LEVEL: debug """.split("\n")).toList()); return simulateHelmRendering(manifests); @@ -678,4 +680,17 @@ protected List getPodNamesByResourceSet(String rs) { .map(p -> p.getMetadata().getName()) .collect(Collectors.toList()); } + + protected String ensureNamespace(String namespaceName) { + var ns = new Namespace(); + var meta = new ObjectMeta(); + + meta.setName(namespaceName); + ns.setMetadata(meta); + + client.namespaces() + .resource(ns) + .createOrReplace(); + return namespaceName; + } } diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/HelmClusterScopedTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/HelmClusterScopedTest.java new file mode 100644 index 00000000..bc5991ac --- /dev/null +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/HelmClusterScopedTest.java @@ -0,0 +1,107 @@ +/* + * Copyright DataStax, Inc. + * + * 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. + */ +package com.datastax.oss.kaap.tests.helm; + +import com.datastax.oss.kaap.LeaderElectionConfig; +import com.datastax.oss.kaap.common.SerializationUtil; +import com.datastax.oss.kaap.crds.cluster.PulsarCluster; +import io.fabric8.kubernetes.api.model.ConfigMap; +import io.fabric8.kubernetes.api.model.Pod; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import lombok.extern.slf4j.Slf4j; +import org.awaitility.Awaitility; +import org.testng.Assert; +import org.testng.annotations.Test; + +@Slf4j +@Test(groups = "helm-cluster-scoped") +public class HelmClusterScopedTest extends BaseHelmTest { + + @Test + public void testHelm() throws Exception { + try { + String operatorNamespace = ensureNamespace(namespace); + String deploymentNamespace = ensureNamespace("deployment-ns"); + + final String spec = """ + operator: + image: %s + watchAllNamespaces: true + imagePullPolicy: Never + replicas: 2 + config: + logLevel: trace + quarkus: + log.level: debug + operator-sdk.controllers."controllers".retry.interval.initial: 2500 + operator: + reconciliationRescheduleSeconds: 3 + """.formatted(OPERATOR_IMAGE); + + Map> specs = new HashMap<>(); + specs.put("operator", (Map) SerializationUtil.readYaml(spec, Map.class).get("operator")); + specs.put("cluster", Map.of("create", "true", + "namespace", deploymentNamespace, + "spec", getDefaultPulsarClusterSpecs())); + final String yaml = SerializationUtil.writeAsYaml(specs); + helmInstall(Chart.OPERATOR, yaml); + awaitOperatorRunning(); + final ConfigMap configMap = client.configMaps().inNamespace(namespace) + .withName("kaap") + .get(); + log.info("Found config map: {}", configMap.getData()); + Assert.assertEquals(configMap.getData().get("QUARKUS_LOG_CATEGORY__COM_DATASTAX_OSS_KAAP__LEVEL"), + "trace"); + Assert.assertEquals(configMap.getData().get("QUARKUS_LOG_LEVEL"), + "debug"); + Assert.assertEquals(configMap.getData().get("QUARKUS_OPERATOR_SDK_CONTROLLERS__CONTROLLERS__RETRY_INTERVAL_INITIAL"), + "2500"); + Assert.assertEquals(configMap.getData().get("KAAP_RECONCILIATION_RESCHEDULE_SECONDS"), + "3"); + + final List pods = getOperatorPods(); + Assert.assertEquals(pods.size(), 2); + Awaitility.await().untilAsserted(() -> { + Assert.assertNotNull(client.leases() + .inNamespace(namespace) + .withName(LeaderElectionConfig.LEASE_NAME) + .get()); + }); + + namespace = deploymentNamespace; + awaitInstalled(); + + namespace = operatorNamespace; + specs.get("operator").put("replicas", 3); + helmUpgrade(Chart.OPERATOR, SerializationUtil.writeAsYaml(specs)); + + Awaitility.await().untilAsserted(() -> { + Assert.assertTrue(getOperatorPods().size() >= 3); + }); + + client.resources(PulsarCluster.class) + .inNamespace(deploymentNamespace) + .withName(DEFAULT_PULSAR_CLUSTER_NAME) + .delete(); + awaitUninstalled(); + } catch (Throwable t) { + log.error("test failed with {}", t.getMessage(), t); + throw new RuntimeException(t); + } + } +} diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/HelmTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/HelmTest.java index f99a9c1a..473a8b2c 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/HelmTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/HelmTest.java @@ -67,6 +67,8 @@ public void testHelm() throws Exception { "2500"); Assert.assertEquals(configMap.getData().get("KAAP_RECONCILIATION_RESCHEDULE_SECONDS"), "3"); + Assert.assertEquals(configMap.getData().get("QUARKUS_OPERATOR_SDK_NAMESPACES"), + "JOSDK_WATCH_CURRENT"); final List pods = getOperatorPods(); Assert.assertEquals(pods.size(), 2); From e12c7c2725b942ac60c7e1a26c4dff9d79f8168a Mon Sep 17 00:00:00 2001 From: rithick-ctds Date: Thu, 10 Apr 2025 10:57:22 +0530 Subject: [PATCH 20/69] Add 0.3.3 Chart Update (#191) --- helm/kaap-stack/Chart.yaml | 2 +- helm/kaap/Chart.yaml | 2 +- helm/kaap/values.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index 56b3380f..66e85dbf 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.2 +version: 0.3.3 dependencies: - name: kaap version: 0.3.x diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 367861c1..cf87184f 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.2 +version: 0.3.3 diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 08934b0e..227cddf5 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -38,7 +38,7 @@ fullnameOverride: "" operator: enabled: true watchAllNamespaces: false - image: datastax/kaap:0.3.0 + image: datastax/kaap:0.3.3 imagePullPolicy: IfNotPresent replicas: 1 nodeSelector: {} From 65b9a0032beb53e67387d0a0d748bdbce345506a Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Thu, 17 Jul 2025 14:00:15 +0530 Subject: [PATCH 21/69] [improve] Allow securityContext on all the statefulsets and deployments (#194) * initial commit for securityContext * Updated resourcesFactories with securityContext to the builders of statefulsets/deployments * preserve previous behaviour of default securityContext * CRDs and api-reference.md update using pre-commit script * updated to allow subset of values of securityContext using SecurityContextConfig.java * pre-commit.sh * fixed NPE * fix tests as previously it is programatically coded. * ordering change for matching the yaml * pulsar CR test yaml update * confluent kafka latest versions are not working with pulsar --- docs/api-reference.md | 792 ++++++++++++++++-- ...utorecoveries.kaap.oss.datastax.com-v1.yml | 19 + .../bastions.kaap.oss.datastax.com-v1.yml | 19 + .../bookkeepers.kaap.oss.datastax.com-v1.yml | 38 + .../crds/brokers.kaap.oss.datastax.com-v1.yml | 38 + ...ctionsworkers.kaap.oss.datastax.com-v1.yml | 19 + .../crds/proxies.kaap.oss.datastax.com-v1.yml | 38 + ...ulsarclusters.kaap.oss.datastax.com-v1.yml | 190 +++++ .../zookeepers.kaap.oss.datastax.com-v1.yml | 19 + .../PulsarClusterResourceGeneratorTest.java | 6 + .../AutorecoveryResourcesFactory.java | 3 + .../bastion/BastionResourcesFactory.java | 3 + .../BookKeeperResourcesFactory.java | 4 +- .../broker/BrokerResourcesFactory.java | 3 + .../FunctionsWorkerResourcesFactory.java | 6 +- .../proxy/ProxyResourcesFactory.java | 3 + .../zookeeper/ZooKeeperResourcesFactory.java | 4 +- .../oss/kaap/crds/BaseComponentSpec.java | 15 +- .../datastax/oss/kaap/crds/CRDConstants.java | 2 + .../crds/autorecovery/AutorecoverySpec.java | 3 + .../oss/kaap/crds/bastion/BastionSpec.java | 3 + .../crds/bookkeeper/BookKeeperSetSpec.java | 1 + .../crds/configs/SecurityContextConfig.java | 65 ++ .../crds/function/FunctionsWorkerSpec.java | 1 + .../kaap/crds/zookeeper/ZooKeeperSpec.java | 1 + .../PulsarClusterControllerTest.java | 6 + .../oss/kaap/tests/helm/KafkaTlsTest.java | 4 +- 27 files changed, 1241 insertions(+), 64 deletions(-) create mode 100644 operator/src/main/java/com/datastax/oss/kaap/crds/configs/SecurityContextConfig.java diff --git a/docs/api-reference.md b/docs/api-reference.md index 79145baa..db98d69b 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -276,6 +276,13 @@ Resource Types: Resources requirements.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false serviceAccountName string @@ -3182,6 +3189,67 @@ Resources requirements. +### PulsarCluster.spec.autorecovery.securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.autorecovery.sidecars[index] @@ -5537,6 +5605,13 @@ Resources requirements. Resources requirements.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false serviceAccountName string @@ -8450,6 +8525,67 @@ Resources requirements. +### PulsarCluster.spec.bastion.securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.bastion.sidecars[index] @@ -10868,6 +11004,13 @@ Resources requirements. Resources requirements.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false service object @@ -17229,6 +17372,67 @@ Resources requirements. +### PulsarCluster.spec.bookkeeper.securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.bookkeeper.service @@ -17515,6 +17719,13 @@ Service configuration. Resources requirements.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false service object @@ -23820,6 +24031,67 @@ Resources requirements. +### PulsarCluster.spec.bookkeeper.sets[key].securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].service @@ -29146,6 +29418,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i Resources requirements.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false service object @@ -35517,6 +35796,67 @@ Resources requirements. +### PulsarCluster.spec.broker.securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.broker.service @@ -35810,6 +36150,13 @@ Service configuration. Resources requirements.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false service object @@ -42167,6 +42514,67 @@ Resources requirements. +### PulsarCluster.spec.broker.sets[key].securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].service @@ -47221,6 +47629,13 @@ Update strategy for the StatefulSet. Runtime mode for functions.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false service object @@ -53419,11 +53834,79 @@ Liveness probe configuration. -### PulsarCluster.spec.functionsWorker.probes.readiness +### PulsarCluster.spec.functionsWorker.probes.readiness + + + +Readiness probe configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
enabledboolean + Enables the probe.
+
false
failureThresholdinteger + Failure threshold.
+
false
initialDelaySecondsinteger + Indicates the initial delay (in seconds) for the probe.
+
false
periodSecondsinteger + Indicates the period (in seconds) for the probe.
+
false
successThresholdinteger + Success threshold.
+
false
terminationGracePeriodSecondsinteger + Indicates the termination grace period (in seconds) for the probe.
+
false
timeoutSecondsinteger + Indicates the timeout (in seconds) for the probe.
+
false
+ + +### PulsarCluster.spec.functionsWorker.rbac -Readiness probe configuration. +RBAC config. @@ -53435,63 +53918,28 @@ Readiness probe configuration. - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
enabledcreate boolean - Enables the probe.
-
false
failureThresholdinteger - Failure threshold.
-
false
initialDelaySecondsinteger - Indicates the initial delay (in seconds) for the probe.
-
false
periodSecondsinteger - Indicates the period (in seconds) for the probe.
-
false
successThresholdinteger - Success threshold.
-
false
terminationGracePeriodSecondsinteger - Indicates the termination grace period (in seconds) for the probe.
+ Create needed RBAC to run the Functions Worker.
false
timeoutSecondsintegernamespacedboolean - Indicates the timeout (in seconds) for the probe.
+ Whether or not the RBAC is created per-namespace or cluster-wise.
false
-### PulsarCluster.spec.functionsWorker.rbac +### PulsarCluster.spec.functionsWorker.resources -RBAC config. +Resources requirements. @@ -53503,28 +53951,28 @@ RBAC config. - - + + - - + +
createbooleanlimitsmap[string]int or string - Create needed RBAC to run the Functions Worker.
+
false
namespacedbooleanrequestsmap[string]int or string - Whether or not the RBAC is created per-namespace or cluster-wise.
+
false
-### PulsarCluster.spec.functionsWorker.resources +### PulsarCluster.spec.functionsWorker.securityContext -Resources requirements. +Subset of PodSecurityContext for basic UID, GID, and volume access control. @@ -53536,15 +53984,43 @@ Resources requirements. - - + + - - + + + + + + + + + + + + + + + + + + + + + + @@ -57926,6 +58402,13 @@ TLS configurations related to the ZooKeeper component. Resources requirements.
+ + + + + @@ -64185,6 +64668,67 @@ Resources requirements.
limitsmap[string]int or stringfsGroupinteger
false
requestsmap[string]int or stringfsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer
false
securityContextobject + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+
false
service object
+### PulsarCluster.spec.proxy.securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.proxy.service @@ -64471,6 +65015,13 @@ Service configuration. Resources requirements.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false service object @@ -70716,6 +71267,67 @@ Resources requirements. +### PulsarCluster.spec.proxy.sets[key].securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].service @@ -76077,6 +76689,13 @@ Resources requirements. Resources requirements.
false + + securityContext + object + + Subset of PodSecurityContext for basic UID, GID, and volume access control.
+ + false service object @@ -82442,6 +83061,67 @@ Resources requirements. +### PulsarCluster.spec.zookeeper.securityContext + + + +Subset of PodSecurityContext for basic UID, GID, and volume access control. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
fsGroupinteger +
+
false
fsGroupChangePolicystring +
+
false
runAsGroupinteger +
+
false
runAsNonRootboolean +
+
false
runAsUserinteger +
+
false
supplementalGroups[]integer +
+
false
+ + ### PulsarCluster.spec.zookeeper.service diff --git a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml index 51d4d45a..ad7e0456 100644 --- a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml @@ -1235,6 +1235,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string diff --git a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml index dd18549e..dc75b245 100644 --- a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml @@ -1239,6 +1239,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string diff --git a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml index b416ead0..ef4a2793 100644 --- a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml @@ -2771,6 +2771,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -4950,6 +4969,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string diff --git a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml index d6f48654..ba24f07f 100644 --- a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml @@ -2722,6 +2722,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -4867,6 +4886,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string diff --git a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml index 509c765b..43848aa6 100644 --- a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml @@ -2651,6 +2651,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string diff --git a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml index 448ddbed..f953f2bc 100644 --- a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml @@ -2717,6 +2717,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -4859,6 +4878,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string diff --git a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml index c6e04c33..741e7572 100644 --- a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml @@ -2717,6 +2717,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -4859,6 +4878,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -6947,6 +6985,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -8179,6 +8236,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -9415,6 +9491,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -11492,6 +11587,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -13642,6 +13756,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -15787,6 +15920,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -17986,6 +18138,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string @@ -20165,6 +20336,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string diff --git a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml index d1d6ea67..7f94619f 100644 --- a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml @@ -2090,6 +2090,25 @@ spec: type: boolean type: object type: object + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + runAsGroup: + type: integer + runAsNonRoot: + type: boolean + fsGroupChangePolicy: + type: string + fsGroup: + type: integer + supplementalGroups: + items: + type: integer + type: array + runAsUser: + type: integer + type: object imagePullPolicy: description: Override image pull policy. type: string diff --git a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java index a934e0a4..95e3ab19 100644 --- a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java +++ b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java @@ -216,6 +216,8 @@ private void assertValue(File tmpDir) { env: [] sidecars: [] initContainers: [] + securityContext: + fsGroup: 0 config: PULSAR_EXTRA_OPTS: -Dpulsar.log.root.level=info PULSAR_GC: -XX:+UseG1GC -XX:MaxGCPauseMillis=10 @@ -327,6 +329,8 @@ private void assertValue(File tmpDir) { resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File + securityContext: + fsGroup: 0 config: BOOKIE_GC: -XX:+UseG1GC -XX:MaxGCPauseMillis=10 BOOKIE_MEM: -Xms4g -Xmx4g -XX:MaxDirectMemorySize=4g -Dio.netty.leakDetectionLevel=disabled -Dio.netty.recycler.linkCapacity=1024 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+ExitOnOutOfMemoryError -XX:+PerfDisableSharedMem @@ -1027,6 +1031,8 @@ private void assertValue(File tmpDir) { env: [] sidecars: [] initContainers: [] + securityContext: + fsGroup: 0 config: PF_authenticateMetricsEndpoint: "false" PULSAR_EXTRA_OPTS: -Dpulsar.log.root.level=info diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java index 45603e05..c02fb7c4 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java @@ -208,6 +208,9 @@ public void patchDeployment() { .withContainers(containers) .withInitContainers(getInitContainers(spec.getInitContainers())) .withVolumes(volumes) + .withSecurityContext(spec.getSecurityContext() == null + ? null + : spec.getSecurityContext().toPodSecurityContext()) .endSpec() .endTemplate() .endSpec() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java index af3b07f7..f412e858 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java @@ -200,6 +200,9 @@ public void patchDeployment() { .withContainers(containers) .withInitContainers(getInitContainers(spec.getInitContainers())) .withVolumes(volumes) + .withSecurityContext(spec.getSecurityContext() == null + ? null + : spec.getSecurityContext().toPodSecurityContext()) .endSpec() .endTemplate() .endSpec() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java index 6c705e01..dda0668a 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java @@ -362,7 +362,9 @@ public StatefulSet generateStatefulSet() { )) .withTerminationGracePeriodSeconds(spec.getGracePeriod().longValue()) .withPriorityClassName(global.getPriorityClassName()) - .withNewSecurityContext().withFsGroup(0L).endSecurityContext() + .withSecurityContext(spec.getSecurityContext() == null + ? null + : spec.getSecurityContext().toPodSecurityContext()) .withInitContainers(initContainers) .withContainers(containers) .withVolumes(volumes) diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java index 110410df..72eefc75 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java @@ -437,6 +437,9 @@ public StatefulSet generateStatefulSet() { .withInitContainers(getInitContainers(spec.getInitContainers())) .withContainers(containers) .withVolumes(volumes) + .withSecurityContext(spec.getSecurityContext() == null + ? null + : spec.getSecurityContext().toPodSecurityContext()) .endSpec() .endTemplate() .endSpec() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java index a8478c0d..41cc238f 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java @@ -518,9 +518,9 @@ public StatefulSet generateStatefulSet() { .withTerminationGracePeriodSeconds(spec.getGracePeriod().longValue()) .withPriorityClassName(global.getPriorityClassName()) .withInitContainers(getInitContainers(spec.getInitContainers())) - .withNewSecurityContext() - .withFsGroup(0L) - .endSecurityContext() + .withSecurityContext(spec.getSecurityContext() == null + ? null + : spec.getSecurityContext().toPodSecurityContext()) .withContainers(containers) .withVolumes(volumes) .endSpec() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java index 1aaad3bb..2f070dff 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java @@ -553,6 +553,9 @@ public void patchDeployment() { .withInitContainers(getInitContainers(spec.getInitContainers())) .withContainers(containers) .withVolumes(volumes) + .withSecurityContext(spec.getSecurityContext() == null + ? null + : spec.getSecurityContext().toPodSecurityContext()) .endSpec() .endTemplate() .endSpec() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperResourcesFactory.java index bac1e156..7970e50c 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperResourcesFactory.java @@ -368,7 +368,9 @@ public void patchStatefulSet() { )) .withTerminationGracePeriodSeconds(gracePeriod) .withPriorityClassName(global.getPriorityClassName()) - .withNewSecurityContext().withFsGroup(0L).endSecurityContext() + .withSecurityContext(spec.getSecurityContext() == null + ? null + : spec.getSecurityContext().toPodSecurityContext()) .withContainers(containers) .withInitContainers(getInitContainers(spec.getInitContainers())) .withVolumes(volumes) diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java index 9be6d75a..29a74dd9 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java @@ -18,6 +18,7 @@ import com.datastax.oss.kaap.crds.configs.AdditionalVolumesConfig; import com.datastax.oss.kaap.crds.configs.AntiAffinityConfig; import com.datastax.oss.kaap.crds.configs.PodDisruptionBudgetConfig; +import com.datastax.oss.kaap.crds.configs.SecurityContextConfig; import com.datastax.oss.kaap.crds.validation.ValidableSpec; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import io.fabric8.kubernetes.api.model.Container; @@ -79,6 +80,8 @@ public abstract class BaseComponentSpec extends ValidableSpec implements W private List initContainers; @JsonPropertyDescription(CRDConstants.DOC_SERVICE_ACCOUNT_NAME) private String serviceAccountName; + @JsonPropertyDescription(CRDConstants.DOC_SECURITY_CONTEXT) + private SecurityContextConfig securityContext; @Override public void applyDefaults(GlobalSpec globalSpec) { @@ -110,7 +113,17 @@ public void applyPdbDefault() { } } - + /** + * Default security context used by bookkeeper, zookeeper and functionsWorker + */ + protected void applyFsGroup0IfSecurityContextMissing() { + if (securityContext == null) { + securityContext = SecurityContextConfig + .builder() + .fsGroup(0L) + .build(); + } + } protected abstract PodDisruptionBudgetConfig getDefaultPdb(); } diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/CRDConstants.java b/operator/src/main/java/com/datastax/oss/kaap/crds/CRDConstants.java index aa77414f..3a510947 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/CRDConstants.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/CRDConstants.java @@ -59,6 +59,8 @@ public final class CRDConstants { public static final String DOC_CONTAINER_ENV = "Additional container env variables."; public static final String DOC_SIDECARS = "Sidecar containers"; public static final String DOC_INIT_CONTAINERS = "Init containers"; + public static final String DOC_SECURITY_CONTEXT = + "Subset of PodSecurityContext for basic UID, GID, and volume access control."; public static final String DOC_SERVICE_ACCOUNT_NAME = "Service account name for the resource."; public static final String DOC_SERVICE_ANNOTATIONS = "Additional annotations to add to the Service."; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java index 3a29a09c..f418fafc 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java @@ -20,6 +20,7 @@ import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.WithDefaults; import com.datastax.oss.kaap.crds.configs.AntiAffinityConfig; +import com.datastax.oss.kaap.crds.configs.SecurityContextConfig; import com.datastax.oss.kaap.crds.validation.ValidableSpec; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.databind.JsonNode; @@ -98,6 +99,8 @@ public class AutorecoverySpec extends ValidableSpec implements private List initContainers; @JsonPropertyDescription(CRDConstants.DOC_SERVICE_ACCOUNT_NAME) private String serviceAccountName; + @JsonPropertyDescription(CRDConstants.DOC_SECURITY_CONTEXT) + private SecurityContextConfig securityContext; @Override public void applyDefaults(GlobalSpec globalSpec) { diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java index 054c1bc6..d4a135d8 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java @@ -20,6 +20,7 @@ import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.WithDefaults; import com.datastax.oss.kaap.crds.configs.AntiAffinityConfig; +import com.datastax.oss.kaap.crds.configs.SecurityContextConfig; import com.datastax.oss.kaap.crds.validation.ValidableSpec; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.databind.JsonNode; @@ -100,6 +101,8 @@ public class BastionSpec extends ValidableSpec implements WithDefau private List initContainers; @JsonPropertyDescription(CRDConstants.DOC_SERVICE_ACCOUNT_NAME) private String serviceAccountName; + @JsonPropertyDescription(CRDConstants.DOC_SECURITY_CONTEXT) + private SecurityContextConfig securityContext; @Override public void applyDefaults(GlobalSpec globalSpec) { diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java index ecbb4f88..fdb1bfee 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java @@ -160,6 +160,7 @@ public static class ServiceConfig { @Override public void applyDefaults(GlobalSpec globalSpec) { super.applyDefaults(globalSpec); + super.applyFsGroup0IfSecurityContextMissing(); if (replicas == null) { replicas = 3; } diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/configs/SecurityContextConfig.java b/operator/src/main/java/com/datastax/oss/kaap/crds/configs/SecurityContextConfig.java new file mode 100644 index 00000000..9839f375 --- /dev/null +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/configs/SecurityContextConfig.java @@ -0,0 +1,65 @@ +/* + * Copyright DataStax, Inc. + * + * 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. + */ +package com.datastax.oss.kaap.crds.configs; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import io.fabric8.kubernetes.api.model.PodSecurityContext; +import io.fabric8.kubernetes.api.model.PodSecurityContextBuilder; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * A minimal wrapper class for Kubernetes {@link io.fabric8.kubernetes.api.model.PodSecurityContext} + * exposing only selected fields required for this CRD for security reasons. + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SecurityContextConfig { + @JsonProperty("fsGroup") + private Long fsGroup; + @JsonProperty("fsGroupChangePolicy") + private String fsGroupChangePolicy; + @JsonProperty("runAsGroup") + private Long runAsGroup; + @JsonProperty("runAsNonRoot") + private Boolean runAsNonRoot; + @JsonProperty("runAsUser") + private Long runAsUser; + @JsonProperty("supplementalGroups") + private List supplementalGroups; + + /** + * Converts this wrapper into a full {@link PodSecurityContext} object. + * Only sets the fields that are explicitly provided. + */ + public PodSecurityContext toPodSecurityContext() { + return new PodSecurityContextBuilder() + .withFsGroup(fsGroup) + .withFsGroupChangePolicy(fsGroupChangePolicy) + .withRunAsGroup(runAsGroup) + .withRunAsNonRoot(runAsNonRoot) + .withRunAsUser(runAsUser) + .withSupplementalGroups(supplementalGroups) + .build(); + } +} diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java index 4ebde435..85c0bf82 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java @@ -144,6 +144,7 @@ public static class ServiceConfig { @Override public void applyDefaults(GlobalSpec globalSpec) { super.applyDefaults(globalSpec); + super.applyFsGroup0IfSecurityContextMissing(); if (replicas == null) { // disabled by default diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java index a50233b0..b553b02f 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java @@ -137,6 +137,7 @@ public static class MetadataInitializationJobConfig { @Override public void applyDefaults(GlobalSpec globalSpec) { super.applyDefaults(globalSpec); + super.applyFsGroup0IfSecurityContextMissing(); if (podManagementPolicy == null) { podManagementPolicy = "Parallel"; } diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/PulsarClusterControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/PulsarClusterControllerTest.java index 976c1096..f3c5d1b7 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/PulsarClusterControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/PulsarClusterControllerTest.java @@ -310,6 +310,8 @@ private void assertFnWorkerYaml(MockKubernetesClient client) { pdb: enabled: true maxUnavailable: 1 + securityContext: + fsGroup: 0 probes: readiness: enabled: true @@ -557,6 +559,8 @@ private void assertBkYaml(String yaml) { pdb: enabled: true maxUnavailable: 1 + securityContext: + fsGroup: 0 probes: readiness: enabled: true @@ -628,6 +632,8 @@ private void assertZkYaml(String yaml) { pdb: enabled: true maxUnavailable: 1 + securityContext: + fsGroup: 0 probes: readiness: enabled: true diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/KafkaTlsTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/KafkaTlsTest.java index 82fab61a..78f7b603 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/KafkaTlsTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/KafkaTlsTest.java @@ -99,7 +99,7 @@ public void test() throws Exception { secretName: pulsar-tls containers: - name: kclient - image: confluentinc/cp-kafka + image: confluentinc/cp-kafka:7.8.2 command: ["/bin/sh"] args: - "-c" @@ -136,7 +136,7 @@ public void test() throws Exception { secretName: pulsar-tls containers: - name: kclient - image: confluentinc/cp-kafka + image: confluentinc/cp-kafka:7.8.2 command: ["/bin/sh"] args: - "-c" From a806ae2a2e61a7dcf577dc0a68288febaddeadc1 Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Thu, 17 Jul 2025 17:45:15 +0530 Subject: [PATCH 22/69] [Release] Operator 0.3.4 (#195) * [maven-release-plugin] prepare release operator-0.3.4 * [maven-release-plugin] prepare for next development iteration --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index c43051bd..77d55b99 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.4-SNAPSHOT + 0.3.5-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index d759a21a..abde86d5 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.4-SNAPSHOT + 0.3.5-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index e2d56bef..f0cbb608 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.4-SNAPSHOT + 0.3.5-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index aacbf48b..844f0dc7 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.3.4-SNAPSHOT + 0.3.5-SNAPSHOT operator-common operator diff --git a/tests/pom.xml b/tests/pom.xml index caa62d0c..409967c3 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.4-SNAPSHOT + 0.3.5-SNAPSHOT 4.0.0 From fc39b8a53f0ca2c3f12e32af8d3baba7d0d18ed6 Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Thu, 17 Jul 2025 18:59:37 +0530 Subject: [PATCH 23/69] [Release] Kaap 0.3.4 (#196) * updated default values.yaml image of kaap * Release kaap chart 0.3.4 --- helm/kaap/Chart.yaml | 2 +- helm/kaap/values.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index cf87184f..0e9923ab 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.3 +version: 0.3.4 diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 227cddf5..9d74e1bf 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -38,7 +38,7 @@ fullnameOverride: "" operator: enabled: true watchAllNamespaces: false - image: datastax/kaap:0.3.3 + image: datastax/kaap:0.3.4 imagePullPolicy: IfNotPresent replicas: 1 nodeSelector: {} From 755807d3744735b6f6ae0400365e159e5dcf5dd0 Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Thu, 17 Jul 2025 20:12:21 +0530 Subject: [PATCH 24/69] Release kaap stack chart 0.3.4 (#197) --- helm/kaap-stack/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index 66e85dbf..5ae07149 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.3 +version: 0.3.4 dependencies: - name: kaap version: 0.3.x From 8203e31892d6a1581579f0720eceaa34db2f946b Mon Sep 17 00:00:00 2001 From: priyanshu-ctds Date: Thu, 21 Aug 2025 13:30:33 +0530 Subject: [PATCH 25/69] LS-1358: upgraded the default lunastreaming version in kaap chart to 4.0_3.6 (#198) --- helm/kaap/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 9d74e1bf..cf27de53 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -69,6 +69,6 @@ cluster: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.1 + image: datastax/lunastreaming-all:4.0_3.6 storage: existingStorageClassName: default \ No newline at end of file From e6c84889002f0410ca7b9975e28156f98168ada5 Mon Sep 17 00:00:00 2001 From: manas-ctds Date: Fri, 22 Aug 2025 20:41:40 +0530 Subject: [PATCH 26/69] LS-1360: Create tenant.json grafana dashboard (#199) --- .../kaap-stack/grafana-dashboards/tenant.json | 1591 +++++++++++++++++ 1 file changed, 1591 insertions(+) create mode 100644 helm/kaap-stack/grafana-dashboards/tenant.json diff --git a/helm/kaap-stack/grafana-dashboards/tenant.json b/helm/kaap-stack/grafana-dashboards/tenant.json new file mode 100644 index 00000000..d555d5ed --- /dev/null +++ b/helm/kaap-stack/grafana-dashboards/tenant.json @@ -0,0 +1,1591 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 45, + "iteration": 1657750112643, + "links": [], + "liveNow": false, + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "avg": false, + "current": false, + "hideEmpty": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_rate_in{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) by (cluster)", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{namespace}}", + "metric": "pulsar_rate_in", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Local publish rate", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "msg/s", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_rate_out{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) by (cluster)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{namespace}}", + "metric": "pulsar_rate_out", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Local delivery rate", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "msg / s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 7 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_throughput_in{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) by (cluster)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{namespace}}", + "metric": "pulsar_throughput_in", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Local publish throughput (bytes/s)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "", + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 7 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_throughput_out{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) by (cluster)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{namespace}}", + "metric": "pulsar_throughput_out", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Local delivery throughput (bytes/s)", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "Bps", + "label": "", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "decimals": 0, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 14 + }, + "hiddenSeries": false, + "id": 7, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_topics_count{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "topics", + "metric": "pulsar_topics_count", + "refId": "D", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_producers_count{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"})", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "producers", + "metric": "pulsar_producers_count", + "refId": "A", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_subscriptions_count{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "subscriptions", + "metric": "pulsar_subscriptions_count", + "refId": "B", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_consumers_count{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "consumers", + "metric": "pulsar_consumers_count", + "refId": "C", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Topics - Producers - Subscriptions - Consumers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [ + "current" + ] + }, + "yaxes": [ + { + "format": "short", + "label": "count", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 14 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_msg_backlog{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) by (cluster)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}} - {{namespace}}", + "metric": "pulsar_msg_backlog", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Local backlog", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Messages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": { + "0 - 0.5 ms": "#2F575E", + "0.5 - 1 ms": "#3F6833", + "1 - 5 ms": "#629E51", + "10 - 20 ms": "#E5A8E2", + "100 - 200 ms": "#EF843C", + "20 - 50 ms": "#65C5DB", + "200 ms - 1 s": "#EA6460", + "5 - 10 ms": "#1F78C1", + "50 - 100 ms": "#E5AC0E", + "< +Inf ms": "#BF1B00", + "< 0.5 ms": "#508642", + "> 1 s": "#BF1B00" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 5, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 21 + }, + "hiddenSeries": false, + "id": 3, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 0, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "< 100 ms", + "yaxis": 1 + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_0_5{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "0 - 0.5 ms", + "metric": "pulsar_add_entry_latency_le_0_5", + "refId": "A", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_1{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "0.5 - 1 ms", + "metric": "pulsar_add_entry_latency_le_1", + "refId": "B", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_5{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "1 - 5 ms", + "metric": "pulsar_add_entry_latency_le_5", + "refId": "C", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_10{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "5 - 10 ms", + "metric": "pulsar_add_entry_latency_le_10", + "refId": "D", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_20{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "10 - 20 ms", + "metric": "pulsar_add_entry_latency_le_20", + "refId": "E", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_50{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "20 - 50 ms", + "metric": "pulsar_add_entry_latency_le_50", + "refId": "F", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_100{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "50 - 100 ms", + "metric": "pulsar_add_entry_latency_le_100", + "refId": "G", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_200{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "100 - 200 ms", + "metric": "pulsar_add_entry_latency_le_200", + "refId": "H", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_le_1000{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "200 ms - 1 s", + "metric": "pulsar_add_entry_latency_le_1000", + "refId": "I", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_storage_write_latency_overflow{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "> 1 s", + "metric": "pulsar_add_entry_latency_overflow", + "refId": "J", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Storage Write Latency", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "msg / s", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 21 + }, + "hiddenSeries": false, + "id": 9, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": false, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "sum(pulsar_storage_size{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) by (cluster)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{cluster}}", + "metric": "pulsar_storage_size", + "range": true, + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Storage Size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": true + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fill": 6, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 28 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 0, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "< 2 KB", + "yaxis": 1 + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_le_128{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "< 128 bytes", + "metric": "pulsar_entry_size_le_128", + "refId": "A", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_le_512{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "< 512 bytes", + "metric": "pulsar_entry_size_le_512", + "refId": "B", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_le_1_kb{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "< 1 KB", + "metric": "pulsar_entry_size_le_1_kb", + "refId": "C", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_le_2_kb{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "< 2 KB", + "metric": "pulsar_entry_size_le_2_kb", + "refId": "D", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_le_4_kb{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "< 4 KB", + "metric": "pulsar_entry_size_le_4_kb", + "refId": "E", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_le_16_kb{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "< 16 KB", + "metric": "pulsar_entry_size_le_16_kb", + "refId": "F", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_le_100_kb{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "< 100 KB", + "metric": "pulsar_entry_size_le_100_kb", + "refId": "G", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_le_1_mb{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "< 1 MB", + "metric": "pulsar_entry_size_le_1_mb", + "refId": "H", + "step": 10 + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_entry_size_overflow{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) / 60.0", + "interval": "", + "intervalFactor": 2, + "legendFormat": "> 1 MB", + "metric": "pulsar_entry_size_le_overflow", + "refId": "I", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Storage entry size", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "msg / s", + "logBase": 1, + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 28 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_replication_rate_out{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{cluster}} → {{remote_cluster}}", + "metric": "pulsar_rate", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Outgoing replication rate | $cluster → any", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "msg / s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 35 + }, + "hiddenSeries": false, + "id": 10, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_replication_rate_in{cluster=~\"$cluster\", namespace=~\"$tenant/.*\", remote_cluster!=\"local\"}) by (cluster, remote_cluster)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{remote_cluster}} → {{cluster}}", + "metric": "pulsar_rate_in", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Incoming replication rate | any → $cluster", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "msg / s", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 35 + }, + "hiddenSeries": false, + "id": 15, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [], + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "8.5.0", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "sum(pulsar_replication_backlog{cluster=~\"$cluster\", namespace=~\"$tenant/.*\"}) by (cluster, remote_cluster)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{cluster}} → {{remote_cluster}}", + "metric": "pulsar_replication_backlog", + "refId": "A", + "step": 10 + } + ], + "thresholds": [], + "timeRegions": [], + "title": "Replication backlog | $cluster → any", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "mode": "time", + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "messages", + "logBase": 1, + "min": "0", + "show": true + }, + { + "format": "short", + "logBase": 1, + "show": false + } + ], + "yaxis": { + "align": false + } + } + ], + "refresh": "1m", + "schemaVersion": 36, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "pulsar-aws-useast1", + "value": "pulsar-aws-useast1" + }, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "definition": "pulsar_producers_count{cluster=~\".+\"}", + "hide": 0, + "includeAll": false, + "label": "Cluster", + "multi": false, + "name": "cluster", + "options": [], + "query": { + "query": "pulsar_producers_count{cluster=~\".+\"}", + "refId": "Prometheus-cluster-Variable-Query" + }, + "refresh": 1, + "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "current": { + "selected": true, + "text": [ + "commonstock-production" + ], + "value": [ + "commonstock-production" + ] + }, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "definition": "pulsar_producers_count{cluster=\"$cluster\"}", + "hide": 0, + "includeAll": false, + "label": "Tenant", + "multi": true, + "name": "tenant", + "options": [], + "query": { + "query": "pulsar_producers_count{cluster=\"$cluster\"}", + "refId": "Prometheus-namespace-Variable-Query" + }, + "refresh": 2, + "regex": "/.*,namespace=\\\"([^\\\"]+)/.*\\\".*/", + "skipUrlSync": false, + "sort": 1, + "tagValuesQuery": "", + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "Pulsar / Tenant", + "uid": "69344d62-a2d7-47f8-b71b-d9da7a82df5c", + "version": 4, + "weekStart": "" +} From d9abf86c02baf016eac87914f30aedc7e5ee449b Mon Sep 17 00:00:00 2001 From: Sreedev <72468234+SreedevT@users.noreply.github.com> Date: Tue, 30 Sep 2025 01:49:17 +0530 Subject: [PATCH 27/69] [feature] Add loadBalancerClass support to proxy and pulsar CRDs (#203) * [feature] Add loadBalancerClass support to proxy and pulsar CRDs * update api-reference.md --- docs/api-reference.md | 14 +++++++++++++ .../crds/proxies.kaap.oss.datastax.com-v1.yml | 6 ++++++ ...ulsarclusters.kaap.oss.datastax.com-v1.yml | 6 ++++++ .../controllers/proxy/ProxyController.java | 2 +- .../proxy/ProxyResourcesFactory.java | 5 +++++ .../oss/kaap/crds/proxy/ProxySetSpec.java | 2 ++ .../proxy/ProxyControllerTest.java | 21 +++++++++++++++++++ 7 files changed, 55 insertions(+), 1 deletion(-) diff --git a/docs/api-reference.md b/docs/api-reference.md index db98d69b..afcfd68b 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -64765,6 +64765,13 @@ Service configuration. Enable plain text connections even if TLS is enabled.
false + + loadBalancerClass + string + + Assign a load balancer class.
+ + false loadBalancerIP string @@ -71364,6 +71371,13 @@ Service configuration. Enable plain text connections even if TLS is enabled.
false + + loadBalancerClass + string + + Assign a load balancer class.
+ + false loadBalancerIP string diff --git a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml index f953f2bc..c64ee398 100644 --- a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml @@ -699,6 +699,9 @@ spec: service: description: Service configuration. properties: + loadBalancerClass: + description: Assign a load balancer class. + type: string additionalPorts: description: Additional ports to add to the Service. items: @@ -2864,6 +2867,9 @@ spec: service: description: Service configuration. properties: + loadBalancerClass: + description: Assign a load balancer class. + type: string additionalPorts: description: Additional ports to add to the Service. items: diff --git a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml index 741e7572..0af454ae 100644 --- a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml @@ -699,6 +699,9 @@ spec: service: description: Service configuration. properties: + loadBalancerClass: + description: Assign a load balancer class. + type: string additionalPorts: description: Additional ports to add to the Service. items: @@ -2864,6 +2867,9 @@ spec: service: description: Service configuration. properties: + loadBalancerClass: + description: Assign a load balancer class. + type: string additionalPorts: description: Additional ports to add to the Service. items: diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyController.java index db201779..2c48f7f4 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyController.java @@ -68,7 +68,7 @@ public static LinkedHashMap getProxySetSpecs(ProxySpec pro @Data @AllArgsConstructor @NoArgsConstructor - public static class ProxySetsLastApplied implements SetsLastApplied { + public static class ProxySetsLastApplied implements AbstractResourceSetsController.SetsLastApplied { private ProxyFullSpec common; private Map sets = new HashMap<>(); } diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java index 2f070dff..240b2b23 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java @@ -208,6 +208,11 @@ public void patchService() { .endSpec() .build(); + + if (serviceSpec.getLoadBalancerClass() != null) { + service.getSpec().setLoadBalancerClass(serviceSpec.getLoadBalancerClass()); + } + patchResource(service); } diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java index d747ce71..75629166 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java @@ -114,6 +114,8 @@ public static class ServiceConfig { private List additionalPorts; @JsonPropertyDescription("Assign a load balancer IP.") private String loadBalancerIP; + @JsonPropertyDescription("Assign a load balancer class.") + private String loadBalancerClass; @JsonPropertyDescription("Service type. Default value is 'ClusterIP'") private String type; @JsonPropertyDescription("Enable plain text connections even if TLS is enabled.") diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java index ba83c903..0f581658 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java @@ -1494,6 +1494,7 @@ public void testService() throws Exception { - name: myport1 port: 3333 loadBalancerIP: 10.11.11.11 + loadBalancerClass: custom-lb-class type: ClusterIP enablePlainTextWithTLS: true """; @@ -1535,6 +1536,26 @@ public void testService() throws Exception { Assert.assertNull(service.getResource().getSpec().getClusterIP()); Assert.assertEquals(service.getResource().getSpec().getType(), "ClusterIP"); Assert.assertEquals(service.getResource().getSpec().getLoadBalancerIP(), "10.11.11.11"); + Assert.assertEquals(service.getResource().getSpec().getLoadBalancerClass(), "custom-lb-class"); + } + + @Test + public void testServiceLoadBalancerClassNull() throws Exception { + String spec = """ + global: + name: pul + persistence: false + image: apachepulsar/pulsar:global + proxy: + service: + type: LoadBalancer + """; + MockKubernetesClient client = invokeController(spec); + final MockKubernetesClient.ResourceInteraction service = + client.getCreatedResource(Service.class); + + Assert.assertNull(service.getResource().getSpec().getLoadBalancerClass()); + Assert.assertEquals(service.getResource().getSpec().getType(), "LoadBalancer"); } @Test From 56a876be86b23d8d2647d5c19cd1025d153e1a0e Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Thu, 16 Oct 2025 22:25:10 +0530 Subject: [PATCH 28/69] LS-1379: Admin console and other external services cert generation (#206) --- dev/run-dev-mode.sh | 2 +- docs/api-reference.md | 185 ++++++++++++++++++ ...utorecoveries.kaap.oss.datastax.com-v1.yml | 138 +++++++++++++ .../bastions.kaap.oss.datastax.com-v1.yml | 138 +++++++++++++ .../bookkeepers.kaap.oss.datastax.com-v1.yml | 138 +++++++++++++ .../crds/brokers.kaap.oss.datastax.com-v1.yml | 138 +++++++++++++ ...ctionsworkers.kaap.oss.datastax.com-v1.yml | 138 +++++++++++++ .../crds/proxies.kaap.oss.datastax.com-v1.yml | 138 +++++++++++++ ...ulsarclusters.kaap.oss.datastax.com-v1.yml | 138 +++++++++++++ .../zookeepers.kaap.oss.datastax.com-v1.yml | 138 +++++++++++++ .../CertManagerCertificatesProvisioner.java | 116 ++++++++--- .../oss/kaap/crds/configs/tls/TlsConfig.java | 13 +- 12 files changed, 1386 insertions(+), 34 deletions(-) diff --git a/dev/run-dev-mode.sh b/dev/run-dev-mode.sh index c6b7621d..4144d734 100755 --- a/dev/run-dev-mode.sh +++ b/dev/run-dev-mode.sh @@ -15,5 +15,5 @@ # limitations under the License. # -kubectl apply -f helm/operator/crds --server-side +kubectl apply -f helm/kaap/crds --server-side mvn -pl operator quarkus:dev -Dquarkus.operator-sdk.crd.generate=false -Dquarkus.operator-sdk.crd.apply=false \ No newline at end of file diff --git a/docs/api-reference.md b/docs/api-reference.md index afcfd68b..782ad397 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -57472,6 +57472,13 @@ Self signed certificate provisioner configuration. Generate self signed certificates for broker, proxy and functions worker.
false + + external + map[string]object + + External services self signed certificate config (e.g., admin console, grafana). The key is the service name, and the value contains generation config
+ + false functionsWorker object @@ -57534,6 +57541,13 @@ Autorecovery self signed certificate config. + dnsNames + []string + + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ + false + generate boolean @@ -57547,6 +57561,13 @@ Autorecovery self signed certificate config. Cert-manager options for generating the private key.
false + + secretName + string + + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+ + false @@ -57614,6 +57635,13 @@ Bookkeeper self signed certificate config. + dnsNames + []string + + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ + false + generate boolean @@ -57627,6 +57655,13 @@ Bookkeeper self signed certificate config. Cert-manager options for generating the private key.
false + + secretName + string + + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+ + false @@ -57694,6 +57729,13 @@ Broker self signed certificate config. + dnsNames + []string + + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ + false + generate boolean @@ -57707,6 +57749,13 @@ Broker self signed certificate config. Cert-manager options for generating the private key.
false + + secretName + string + + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+ + false @@ -57715,6 +57764,100 @@ Broker self signed certificate config. +Cert-manager options for generating the private key. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
algorithmstring +
+
false
encodingstring +
+
false
rotationPolicystring +
+
false
sizeinteger +
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.selfSigned.external[key] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
dnsNames[]string + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+
false
generateboolean + Generate self signed certificates for the component.
+
false
privateKeyobject + Cert-manager options for generating the private key.
+
false
secretNamestring + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.selfSigned.external[key].privateKey + + + Cert-manager options for generating the private key. @@ -57774,6 +57917,13 @@ Functions worker self signed certificate config. + + + + + + + + + +
dnsNames[]string + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+
false
generate boolean @@ -57787,6 +57937,13 @@ Functions worker self signed certificate config. Cert-manager options for generating the private key.
false
secretNamestring + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+
false
@@ -57901,6 +58058,13 @@ Proxy self signed certificate config. + dnsNames + []string + + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ + false + generate boolean @@ -57914,6 +58078,13 @@ Proxy self signed certificate config. Cert-manager options for generating the private key.
false + + secretName + string + + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+ + false @@ -57981,6 +58152,13 @@ Zookeeper self signed certificate config. + dnsNames + []string + + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ + false + generate boolean @@ -57994,6 +58172,13 @@ Zookeeper self signed certificate config. Cert-manager options for generating the private key.
false + + secretName + string + + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+ + false diff --git a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml index ad7e0456..79a4b958 100644 --- a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml @@ -1401,6 +1401,14 @@ spec: description: Functions worker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1414,6 +1422,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1440,6 +1456,14 @@ spec: description: Autorecovery self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1453,6 +1477,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1461,6 +1493,14 @@ spec: bookkeeper: description: Bookkeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1474,6 +1514,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1482,6 +1530,14 @@ spec: proxy: description: Proxy self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1495,6 +1551,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1503,6 +1567,14 @@ spec: zookeeper: description: Zookeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1516,6 +1588,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1524,6 +1604,14 @@ spec: broker: description: Broker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1537,6 +1625,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1553,6 +1649,48 @@ spec: caSecretName: description: Secret where to store the root CA certificate. type: string + external: + additionalProperties: + properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array + privateKey: + description: Cert-manager options for generating + the private key. + properties: + rotationPolicy: + type: string + encoding: + type: string + algorithm: + type: string + size: + type: integer + type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if + not specified + type: string + generate: + description: Generate self signed certificates + for the component. + type: boolean + type: object + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: object type: object type: object autorecovery: diff --git a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml index dc75b245..ba67d1fa 100644 --- a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml @@ -1405,6 +1405,14 @@ spec: description: Functions worker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1418,6 +1426,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1444,6 +1460,14 @@ spec: description: Autorecovery self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1457,6 +1481,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1465,6 +1497,14 @@ spec: bookkeeper: description: Bookkeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1478,6 +1518,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1486,6 +1534,14 @@ spec: proxy: description: Proxy self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1499,6 +1555,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1507,6 +1571,14 @@ spec: zookeeper: description: Zookeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1520,6 +1592,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1528,6 +1608,14 @@ spec: broker: description: Broker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -1541,6 +1629,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -1557,6 +1653,48 @@ spec: caSecretName: description: Secret where to store the root CA certificate. type: string + external: + additionalProperties: + properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array + privateKey: + description: Cert-manager options for generating + the private key. + properties: + rotationPolicy: + type: string + encoding: + type: string + algorithm: + type: string + size: + type: integer + type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if + not specified + type: string + generate: + description: Generate self signed certificates + for the component. + type: boolean + type: object + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: object type: object type: object autorecovery: diff --git a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml index ef4a2793..d944274e 100644 --- a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml @@ -149,6 +149,14 @@ spec: description: Functions worker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -162,6 +170,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -188,6 +204,14 @@ spec: description: Autorecovery self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -201,6 +225,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -209,6 +241,14 @@ spec: bookkeeper: description: Bookkeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -222,6 +262,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -230,6 +278,14 @@ spec: proxy: description: Proxy self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -243,6 +299,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -251,6 +315,14 @@ spec: zookeeper: description: Zookeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -264,6 +336,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -272,6 +352,14 @@ spec: broker: description: Broker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -285,6 +373,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -301,6 +397,48 @@ spec: caSecretName: description: Secret where to store the root CA certificate. type: string + external: + additionalProperties: + properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array + privateKey: + description: Cert-manager options for generating + the private key. + properties: + rotationPolicy: + type: string + encoding: + type: string + algorithm: + type: string + size: + type: integer + type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if + not specified + type: string + generate: + description: Generate self signed certificates + for the component. + type: boolean + type: object + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: object type: object type: object autorecovery: diff --git a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml index ba24f07f..6c4f863d 100644 --- a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml @@ -149,6 +149,14 @@ spec: description: Functions worker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -162,6 +170,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -188,6 +204,14 @@ spec: description: Autorecovery self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -201,6 +225,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -209,6 +241,14 @@ spec: bookkeeper: description: Bookkeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -222,6 +262,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -230,6 +278,14 @@ spec: proxy: description: Proxy self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -243,6 +299,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -251,6 +315,14 @@ spec: zookeeper: description: Zookeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -264,6 +336,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -272,6 +352,14 @@ spec: broker: description: Broker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -285,6 +373,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -301,6 +397,48 @@ spec: caSecretName: description: Secret where to store the root CA certificate. type: string + external: + additionalProperties: + properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array + privateKey: + description: Cert-manager options for generating + the private key. + properties: + rotationPolicy: + type: string + encoding: + type: string + algorithm: + type: string + size: + type: integer + type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if + not specified + type: string + generate: + description: Generate self signed certificates + for the component. + type: boolean + type: object + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: object type: object type: object autorecovery: diff --git a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml index 43848aa6..65d42531 100644 --- a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml @@ -151,6 +151,14 @@ spec: description: Functions worker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -164,6 +172,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -190,6 +206,14 @@ spec: description: Autorecovery self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -203,6 +227,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -211,6 +243,14 @@ spec: bookkeeper: description: Bookkeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -224,6 +264,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -232,6 +280,14 @@ spec: proxy: description: Proxy self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -245,6 +301,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -253,6 +317,14 @@ spec: zookeeper: description: Zookeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -266,6 +338,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -274,6 +354,14 @@ spec: broker: description: Broker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -287,6 +375,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -303,6 +399,48 @@ spec: caSecretName: description: Secret where to store the root CA certificate. type: string + external: + additionalProperties: + properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array + privateKey: + description: Cert-manager options for generating + the private key. + properties: + rotationPolicy: + type: string + encoding: + type: string + algorithm: + type: string + size: + type: integer + type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if + not specified + type: string + generate: + description: Generate self signed certificates + for the component. + type: boolean + type: object + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: object type: object type: object autorecovery: diff --git a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml index c64ee398..e1abb87e 100644 --- a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml @@ -149,6 +149,14 @@ spec: description: Functions worker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -162,6 +170,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -188,6 +204,14 @@ spec: description: Autorecovery self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -201,6 +225,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -209,6 +241,14 @@ spec: bookkeeper: description: Bookkeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -222,6 +262,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -230,6 +278,14 @@ spec: proxy: description: Proxy self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -243,6 +299,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -251,6 +315,14 @@ spec: zookeeper: description: Zookeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -264,6 +336,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -272,6 +352,14 @@ spec: broker: description: Broker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -285,6 +373,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -301,6 +397,48 @@ spec: caSecretName: description: Secret where to store the root CA certificate. type: string + external: + additionalProperties: + properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array + privateKey: + description: Cert-manager options for generating + the private key. + properties: + rotationPolicy: + type: string + encoding: + type: string + algorithm: + type: string + size: + type: integer + type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if + not specified + type: string + generate: + description: Generate self signed certificates + for the component. + type: boolean + type: object + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: object type: object type: object autorecovery: diff --git a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml index 0af454ae..2fe134b7 100644 --- a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml @@ -149,6 +149,14 @@ spec: description: Functions worker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -162,6 +170,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -188,6 +204,14 @@ spec: description: Autorecovery self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -201,6 +225,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -209,6 +241,14 @@ spec: bookkeeper: description: Bookkeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -222,6 +262,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -230,6 +278,14 @@ spec: proxy: description: Proxy self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -243,6 +299,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -251,6 +315,14 @@ spec: zookeeper: description: Zookeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -264,6 +336,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -272,6 +352,14 @@ spec: broker: description: Broker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -285,6 +373,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -301,6 +397,48 @@ spec: caSecretName: description: Secret where to store the root CA certificate. type: string + external: + additionalProperties: + properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array + privateKey: + description: Cert-manager options for generating + the private key. + properties: + rotationPolicy: + type: string + encoding: + type: string + algorithm: + type: string + size: + type: integer + type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if + not specified + type: string + generate: + description: Generate self signed certificates + for the component. + type: boolean + type: object + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: object type: object type: object autorecovery: diff --git a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml index 7f94619f..dd2cb5df 100644 --- a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml @@ -2256,6 +2256,14 @@ spec: description: Functions worker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -2269,6 +2277,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -2295,6 +2311,14 @@ spec: description: Autorecovery self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -2308,6 +2332,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -2316,6 +2348,14 @@ spec: bookkeeper: description: Bookkeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -2329,6 +2369,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -2337,6 +2385,14 @@ spec: proxy: description: Proxy self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -2350,6 +2406,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -2358,6 +2422,14 @@ spec: zookeeper: description: Zookeeper self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -2371,6 +2443,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -2379,6 +2459,14 @@ spec: broker: description: Broker self signed certificate config. properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array privateKey: description: Cert-manager options for generating the private key. @@ -2392,6 +2480,14 @@ spec: size: type: integer type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if not + specified + type: string generate: description: Generate self signed certificates for the component. @@ -2408,6 +2504,48 @@ spec: caSecretName: description: Secret where to store the root CA certificate. type: string + external: + additionalProperties: + properties: + dnsNames: + description: A list of DNS names (and IP addresses) + to include in the certificate's Subject Alternative + Names (SANs) extension along with the default + K8s service DNS. + items: + type: string + type: array + privateKey: + description: Cert-manager options for generating + the private key. + properties: + rotationPolicy: + type: string + encoding: + type: string + algorithm: + type: string + size: + type: integer + type: object + secretName: + description: The name of the Kubernetes Secret + where the generated certificate and key will + be stored whe perComponent is enabled. Required + for external services. Internal services pick + up the secret name from the tls config if + not specified + type: string + generate: + description: Generate self signed certificates + for the component. + type: boolean + type: object + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: object type: object type: object autorecovery: diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisioner.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisioner.java index 136e86e5..24350688 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisioner.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisioner.java @@ -27,6 +27,7 @@ import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; import com.datastax.oss.kaap.crds.configs.tls.TlsConfig; +import com.datastax.oss.kaap.crds.configs.tls.TlsConfig.SelfSignedCertificatePerComponentConfig; import io.fabric8.certmanager.api.model.v1.Certificate; import io.fabric8.certmanager.api.model.v1.CertificateBuilder; import io.fabric8.certmanager.api.model.v1.CertificatePrivateKey; @@ -35,6 +36,7 @@ import io.fabric8.kubernetes.client.KubernetesClient; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import lombok.extern.jbosslog.JBossLog; import org.apache.commons.lang3.ObjectUtils; @@ -85,20 +87,21 @@ public void generateCertificates() { if (selfSigned.getPerComponent() == null || !selfSigned.getPerComponent()) { List dnsNames = new ArrayList<>(); if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getBookkeeper())) { - dnsNames.addAll(getBookKeeperDNSNames()); + dnsNames.addAll(getBookKeeperDNSNames(null)); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getZookeeper())) { - dnsNames.addAll(getZookeeperDNSNames()); + dnsNames.addAll(getZookeeperDNSNames(null)); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getBroker())) { - dnsNames.addAll(getBrokerDNSNames()); + dnsNames.addAll(getBrokerDNSNames(null)); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getProxy())) { - dnsNames.addAll(getProxyDNSNames()); + dnsNames.addAll(getProxyDNSNames(null)); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getFunctionsWorker())) { - dnsNames.addAll(getFunctionsWorkerDNSNames()); + dnsNames.addAll(getFunctionsWorkerDNSNames(null)); } + dnsNames.addAll(getDnsNamesForExternalServicesForGlobalCert()); if (globalSpec.getDnsName() != null && selfSigned.getIncludeDns() != null && selfSigned.getIncludeDns()) { @@ -115,14 +118,16 @@ public void generateCertificates() { if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getBroker())) { createCertificatePerComponent(selfSigned.getBroker(), globalSpec.getComponents().getBrokerBaseName(), - globalSpec.getTls().getBroker().getSecretName(), - getBrokerDNSNames()); + ObjectUtils.firstNonNull(selfSigned.getBroker().getSecretName(), + globalSpec.getTls().getBroker().getSecretName()), + getBrokerDNSNames(selfSigned.getBroker())); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getBookkeeper())) { createCertificatePerComponent(selfSigned.getBookkeeper(), globalSpec.getComponents().getBookkeeperBaseName(), - globalSpec.getTls().getBookkeeper().getSecretName(), - getBookKeeperDNSNames()); + ObjectUtils.firstNonNull(selfSigned.getBookkeeper().getSecretName(), + globalSpec.getTls().getBookkeeper().getSecretName()), + getBookKeeperDNSNames(selfSigned.getBookkeeper())); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getAutorecovery())) { createAutorecoveryCertificate(); @@ -130,21 +135,40 @@ public void generateCertificates() { if (TlsConfig.ProxyTlsEntryConfig.isEnabled(globalSpec.getTls().getProxy())) { createCertificatePerComponent(selfSigned.getProxy(), globalSpec.getComponents().getProxyBaseName(), - globalSpec.getTls().getProxy().getSecretName(), - getProxyDNSNames()); + ObjectUtils.firstNonNull(selfSigned.getProxy().getSecretName(), + globalSpec.getTls().getProxy().getSecretName()), + getProxyDNSNames(selfSigned.getProxy())); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getZookeeper())) { createCertificatePerComponent(selfSigned.getZookeeper(), globalSpec.getComponents().getZookeeperBaseName(), - globalSpec.getTls().getZookeeper().getSecretName(), - getZookeeperDNSNames()); + ObjectUtils.firstNonNull(selfSigned.getZookeeper().getSecretName(), + globalSpec.getTls().getZookeeper().getSecretName()), + getZookeeperDNSNames(selfSigned.getZookeeper())); } if (TlsConfig.FunctionsWorkerTlsEntryConfig.isEnabled(globalSpec.getTls().getFunctionsWorker())) { createCertificatePerComponent(selfSigned.getFunctionsWorker(), globalSpec.getComponents().getFunctionsWorkerBaseName(), - globalSpec.getTls().getFunctionsWorker().getSecretName(), - getFunctionsWorkerDNSNames()); + ObjectUtils.firstNonNull(selfSigned.getFunctionsWorker().getSecretName(), + globalSpec.getTls().getFunctionsWorker().getSecretName()), + getFunctionsWorkerDNSNames(selfSigned.getFunctionsWorker())); + } + if (selfSigned.getExternal() != null) { + for (Map.Entry entry + : selfSigned.getExternal().entrySet()) { + final String serviceName = entry.getKey(); + final SelfSignedCertificatePerComponentConfig config = entry.getValue(); + + if (config.getGenerate() != null && config.getGenerate()) { + createCertificatePerComponent( + config, + serviceName, + config.getSecretName(), + getBaseK8sDnsNames(config, serviceName) + ); + } + } } } } @@ -195,52 +219,80 @@ private void createCertificatePerComponent(final TlsConfig.SelfSignedCertificate ); } - private List getBookKeeperDNSNames() { + private List mergeDnsNames(List k8sDnsNames, SelfSignedCertificatePerComponentConfig config) { + final List finalDnsNames = new ArrayList<>(ObjectUtils.firstNonNull(k8sDnsNames, new ArrayList<>())); + if (config != null && config.getDnsNames() != null) { + finalDnsNames.addAll(config.getDnsNames()); + } + return finalDnsNames; + } + + private List getDnsNamesForExternalServicesForGlobalCert() { + final List dnsNames = new ArrayList<>(); + if (selfSigned.getExternal() != null) { + for (Map.Entry entry + : selfSigned.getExternal().entrySet()) { + final SelfSignedCertificatePerComponentConfig config = entry.getValue(); + dnsNames.addAll(getBaseK8sDnsNames(config, entry.getKey())); + } + } + return dnsNames; + } + + private List getBaseK8sDnsNames(SelfSignedCertificatePerComponentConfig config, String serviceName) { + List k8sDnsNames = enumerateDnsNames(serviceName, true); + return mergeDnsNames(k8sDnsNames, config); + } + + private List getBookKeeperDNSNames(SelfSignedCertificatePerComponentConfig config) { final String componentBaseName = BookKeeperResourcesFactory.getComponentBaseName(globalSpec); - return BookKeeperController + List k8sDnsNames = BookKeeperController .enumerateBookKeeperSets(clusterSpecName, componentBaseName, pulsarClusterSpec.getBookkeeper()).stream() .flatMap(set -> enumerateDnsNames(set, true).stream()) .collect(Collectors.toList()); + return mergeDnsNames(k8sDnsNames, config); } - private List getFunctionsWorkerDNSNames() { + private List getFunctionsWorkerDNSNames(SelfSignedCertificatePerComponentConfig config) { final String functionsWorkerBase = FunctionsWorkerResourcesFactory.getResourceName(clusterSpecName, FunctionsWorkerResourcesFactory.getComponentBaseName(globalSpec)); - List dnsNames = new ArrayList<>(); + List k8sDnsNames = new ArrayList<>(); // The DNS names ending in "-ca" are meant for client access. The wildcard names are used for zookeeper to // zookeeper networking. - dnsNames.addAll(enumerateDnsNames(functionsWorkerBase, true)); - dnsNames.addAll(enumerateDnsNames(functionsWorkerBase + "-ca", false)); - return dnsNames; + k8sDnsNames.addAll(enumerateDnsNames(functionsWorkerBase, true)); + k8sDnsNames.addAll(enumerateDnsNames(functionsWorkerBase + "-ca", false)); + return mergeDnsNames(k8sDnsNames, config); } - private List getZookeeperDNSNames() { + private List getZookeeperDNSNames(SelfSignedCertificatePerComponentConfig config) { final String zookeeperDNSNames = ZooKeeperResourcesFactory.getResourceName(clusterSpecName, ZooKeeperResourcesFactory.getComponentBaseName(globalSpec)); - List dnsNames = new ArrayList<>(); + List k8sDnsNames = new ArrayList<>(); // The DNS names ending in "-ca" are meant for client access. The wildcard names are used for zookeeper to // zookeeper networking. - dnsNames.addAll(enumerateDnsNames(zookeeperDNSNames, true)); - dnsNames.addAll(enumerateDnsNames(zookeeperDNSNames + "-ca", false)); - return dnsNames; + k8sDnsNames.addAll(enumerateDnsNames(zookeeperDNSNames, true)); + k8sDnsNames.addAll(enumerateDnsNames(zookeeperDNSNames + "-ca", false)); + return mergeDnsNames(k8sDnsNames, config); } - private List getProxyDNSNames() { + private List getProxyDNSNames(SelfSignedCertificatePerComponentConfig config) { final String componentBaseName = ProxyResourcesFactory.getComponentBaseName(globalSpec); - return ProxyController + List k8sDnsNames = ProxyController .enumerateProxySets(clusterSpecName, componentBaseName, pulsarClusterSpec.getProxy()).stream() .flatMap(set -> enumerateDnsNames(set, false).stream()) .collect(Collectors.toList()); + return mergeDnsNames(k8sDnsNames, config); } - private List getBrokerDNSNames() { + private List getBrokerDNSNames(SelfSignedCertificatePerComponentConfig config) { final String componentBaseName = BrokerResourcesFactory.getComponentBaseName(globalSpec); - return BrokerController + List k8sDnsNames = BrokerController .enumerateBrokerSets(clusterSpecName, componentBaseName, pulsarClusterSpec.getBroker()).stream() .flatMap(set -> enumerateDnsNames(set, true).stream()) .collect(Collectors.toList()); + return mergeDnsNames(k8sDnsNames, config); } private List enumerateDnsNames(final String serviceName, boolean wildcard) { @@ -339,4 +391,4 @@ private void createRootCACertificate() { } -} +} \ No newline at end of file diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/configs/tls/TlsConfig.java b/operator/src/main/java/com/datastax/oss/kaap/crds/configs/tls/TlsConfig.java index 6767a9e3..4e76751e 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/configs/tls/TlsConfig.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/configs/tls/TlsConfig.java @@ -17,6 +17,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyDescription; import io.fabric8.certmanager.api.model.v1.CertificatePrivateKey; +import java.util.List; import java.util.Map; import lombok.AllArgsConstructor; import lombok.Builder; @@ -149,6 +150,9 @@ public static class SelfSignedCertProvisionerConfig { SelfSignedCertificatePerComponentConfig functionsWorker; @JsonPropertyDescription("Autorecovery self signed certificate config.") SelfSignedCertificatePerComponentConfig autorecovery; + @JsonPropertyDescription("External services self signed certificate config (e.g., admin console, grafana). " + + "The key is the service name, and the value contains generation config") + Map external; } @Data @@ -160,5 +164,12 @@ public static class SelfSignedCertificatePerComponentConfig { Boolean generate; @JsonPropertyDescription("Cert-manager options for generating the private key.") CertificatePrivateKey privateKey; + @JsonPropertyDescription("A list of DNS names (and IP addresses) to include in the certificate's Subject " + + "Alternative Names (SANs) extension along with the default K8s service DNS.") + List dnsNames; + @JsonPropertyDescription("The name of the Kubernetes Secret where the generated certificate " + + "and key will be stored whe perComponent is enabled. Required for external services. " + + "Internal services pick up the secret name from the tls config if not specified") + String secretName; } -} +} \ No newline at end of file From ea4dbb4a2cf7e4cf53d0d50735f5a2c43676f664 Mon Sep 17 00:00:00 2001 From: ganesh-ctds Date: Wed, 22 Oct 2025 17:07:06 +0530 Subject: [PATCH 29/69] Update ubuntu runner version to use latest. (#207) --- .github/workflows/ci-sync-doc.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-sync-doc.yaml b/.github/workflows/ci-sync-doc.yaml index 09ced11b..34363cae 100644 --- a/.github/workflows/ci-sync-doc.yaml +++ b/.github/workflows/ci-sync-doc.yaml @@ -7,7 +7,7 @@ on: jobs: sync-gh-pages-doc: name: Sync pages - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v3 From 6893c6676bff73d39121cf65600de4fddf0dd655 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Thu, 23 Oct 2025 14:32:44 -0500 Subject: [PATCH 30/69] upgrade quarkus and k8s client (#201) * upgrade quarkus and k8s client - upgrade quarkus 5.1.4 -> 6.9.3 - upgrade k8s client 6.3.1 -> 6.14.0 - update javax packages to jakarta - regenerate CRDs * dev mode now requires CRDs to be applied by quarkus itself. * reverting the change to patchStatus because of failure * quarkus maven plugin version should be compatible with the sdk * downgrade fabric8 to 6.13.4 for quarkus compatibility * helm based tests are not applying rbac manifests but trying to delete them. * remove sundr and jackson dependency management - crd generator switched from sundrio to jackson - jackson dependencies are now managed by fabric8 * duplicate nodeselectors test fix --------- Co-authored-by: sandeep-ctds --- dev/run-dev-mode.sh | 3 +- docs/api-reference.md | 7721 ++- ...utorecoveries.kaap.oss.datastax.com-v1.yml | 3307 +- .../bastions.kaap.oss.datastax.com-v1.yml | 3315 +- .../bookkeepers.kaap.oss.datastax.com-v1.yml | 10024 ++-- .../crds/brokers.kaap.oss.datastax.com-v1.yml | 9885 ++-- ...ctionsworkers.kaap.oss.datastax.com-v1.yml | 5330 +-- .../crds/proxies.kaap.oss.datastax.com-v1.yml | 9286 ++-- ...ulsarclusters.kaap.oss.datastax.com-v1.yml | 38848 ++++++++-------- .../zookeepers.kaap.oss.datastax.com-v1.yml | 5069 +- migration-tool/pom.xml | 2 +- .../PulsarClusterResourceGeneratorTest.java | 2 + operator-common/pom.xml | 7 +- .../oss/kaap/mocks/MockKubeServer.java | 49 + operator/Dockerfile | 2 +- operator/pom.xml | 17 +- .../oss/kaap/KubernetesClientFactory.java | 32 + .../oss/kaap/LeaderElectionConfig.java | 2 +- .../autoscaler/BookKeeperSetAutoscaler.java | 2 +- .../kaap/controllers/AbstractController.java | 10 +- .../controllers/BaseResourcesFactory.java | 12 +- .../controllers/PulsarClusterController.java | 4 +- .../bookkeeper/BookKeeperController.java | 2 +- .../datastax/oss/kaap/crds/GlobalSpec.java | 4 +- .../autorecovery/AutorecoveryFullSpec.java | 2 +- .../crds/autorecovery/AutorecoverySpec.java | 4 +- .../kaap/crds/bastion/BastionFullSpec.java | 2 +- .../oss/kaap/crds/bastion/BastionSpec.java | 4 +- .../bookkeeper/BookKeeperAutoRackConfig.java | 2 +- .../bookkeeper/BookKeeperAutoscalerSpec.java | 12 +- .../crds/bookkeeper/BookKeeperFullSpec.java | 2 +- .../crds/bookkeeper/BookKeeperSetSpec.java | 6 +- .../kaap/crds/bookkeeper/BookKeeperSpec.java | 2 +- .../crds/broker/BrokerAutoscalerSpec.java | 18 +- .../oss/kaap/crds/broker/BrokerFullSpec.java | 2 +- .../oss/kaap/crds/broker/BrokerSetSpec.java | 6 +- .../oss/kaap/crds/broker/BrokerSpec.java | 2 +- .../kaap/crds/cluster/PulsarClusterSpec.java | 4 +- .../function/FunctionsWorkerFullSpec.java | 2 +- .../crds/function/FunctionsWorkerSpec.java | 4 +- .../oss/kaap/crds/proxy/ProxyFullSpec.java | 2 +- .../oss/kaap/crds/proxy/ProxySetSpec.java | 4 +- .../oss/kaap/crds/proxy/ProxySpec.java | 2 +- .../oss/kaap/crds/validation/ValidSpec.java | 4 +- .../kaap/crds/validation/ValidableSpec.java | 2 +- .../crds/zookeeper/ZooKeeperFullSpec.java | 2 +- .../kaap/crds/zookeeper/ZooKeeperSpec.java | 4 +- .../src/main/resources/application.properties | 1 + pom.xml | 72 +- src/generate-crds-docs.sh | 11 +- tests/pom.xml | 6 +- .../oss/kaap/tests/BaseK8sEnvTest.java | 8 +- 52 files changed, 50577 insertions(+), 42550 deletions(-) create mode 100644 operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubeServer.java create mode 100644 operator/src/main/java/com/datastax/oss/kaap/KubernetesClientFactory.java diff --git a/dev/run-dev-mode.sh b/dev/run-dev-mode.sh index 4144d734..f76fdf2a 100755 --- a/dev/run-dev-mode.sh +++ b/dev/run-dev-mode.sh @@ -15,5 +15,4 @@ # limitations under the License. # -kubectl apply -f helm/kaap/crds --server-side -mvn -pl operator quarkus:dev -Dquarkus.operator-sdk.crd.generate=false -Dquarkus.operator-sdk.crd.apply=false \ No newline at end of file +mvn -pl operator quarkus:dev -Dquarkus.operator-sdk.crd.generate=false -Dquarkus.operator-sdk.crd.apply=true \ No newline at end of file diff --git a/docs/api-reference.md b/docs/api-reference.md index 782ad397..3397c58a 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -765,6 +765,13 @@ Indicates the provisioner property for the StorageClass.
false + + resizePolicy + []object + +
+ + false resources object @@ -772,6 +779,13 @@ Indicates the provisioner property for the StorageClass.
false + + restartPolicy + string + +
+ + false securityContext object @@ -1254,6 +1268,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -1378,160 +1399,7 @@ Indicates the provisioner property for the StorageClass. -### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.postStart.tcpSocket - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
hoststring -
-
false
portint or string -
-
false
- - -### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
execobject -
-
false
httpGetobject -
-
false
tcpSocketobject -
-
false
- - -### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.exec - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
command[]string -
-
false
- - -### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.httpGet - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
hoststring -
-
false
httpHeaders[]object -
-
false
pathstring -
-
false
portint or string -
-
false
schemestring -
-
false
- - -### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.httpGet.httpHeaders[index] +### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.postStart.sleep @@ -1547,15 +1415,8 @@ Indicates the provisioner property for the StorageClass. - name - string - -
- - false - - value - string + seconds + integer
@@ -1564,7 +1425,7 @@ Indicates the provisioner property for the StorageClass. -### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.tcpSocket +### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.postStart.tcpSocket @@ -1597,7 +1458,7 @@ Indicates the provisioner property for the StorageClass. -### PulsarCluster.spec.autorecovery.initContainers[index].livenessProbe +### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop @@ -1613,80 +1474,38 @@ Indicates the provisioner property for the StorageClass. - exec + exec object
false - failureThreshold - integer - -
- - false - - grpc + httpGet object
false - httpGet + sleep object
false - initialDelaySeconds - integer - -
- - false - - periodSeconds - integer - -
- - false - - successThreshold - integer - -
- - false - - tcpSocket + tcpSocket object
false - - terminationGracePeriodSeconds - integer - -
- - false - - timeoutSeconds - integer - -
- - false -### PulsarCluster.spec.autorecovery.initContainers[index].livenessProbe.exec +### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.exec @@ -1712,40 +1531,7 @@ Indicates the provisioner property for the StorageClass. -### PulsarCluster.spec.autorecovery.initContainers[index].livenessProbe.grpc - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
portinteger -
-
false
servicestring -
-
false
- - -### PulsarCluster.spec.autorecovery.initContainers[index].livenessProbe.httpGet +### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.httpGet @@ -1768,7 +1554,301 @@ Indicates the provisioner property for the StorageClass. false - httpHeaders + httpHeaders + []object + +
+ + false + + path + string + +
+ + false + + port + int or string + +
+ + false + + scheme + string + +
+ + false + + + + +### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.httpGet.httpHeaders[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
valuestring +
+
false
+ + +### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + +### PulsarCluster.spec.autorecovery.initContainers[index].lifecycle.preStop.tcpSocket + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
hoststring +
+
false
portint or string +
+
false
+ + +### PulsarCluster.spec.autorecovery.initContainers[index].livenessProbe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
execobject +
+
false
failureThresholdinteger +
+
false
grpcobject +
+
false
httpGetobject +
+
false
initialDelaySecondsinteger +
+
false
periodSecondsinteger +
+
false
successThresholdinteger +
+
false
tcpSocketobject +
+
false
terminationGracePeriodSecondsinteger +
+
false
timeoutSecondsinteger +
+
false
+ + +### PulsarCluster.spec.autorecovery.initContainers[index].livenessProbe.exec + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
command[]string +
+
false
+ + +### PulsarCluster.spec.autorecovery.initContainers[index].livenessProbe.grpc + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
portinteger +
+
false
servicestring +
+
false
+ + +### PulsarCluster.spec.autorecovery.initContainers[index].livenessProbe.httpGet + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
hoststring +
+
false
httpHeaders []object
@@ -2187,6 +2267,39 @@ Indicates the provisioner property for the StorageClass.
+### PulsarCluster.spec.autorecovery.initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.autorecovery.initContainers[index].resources @@ -2203,6 +2316,13 @@ Indicates the provisioner property for the StorageClass. + claims + []object + +
+ + false + limits map[string]int or string @@ -2220,6 +2340,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.autorecovery.initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.autorecovery.initContainers[index].securityContext @@ -2242,6 +2388,13 @@ Indicates the provisioner property for the StorageClass.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -2316,6 +2469,39 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.autorecovery.initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.autorecovery.initContainers[index].securityContext.capabilities @@ -2820,6 +3006,13 @@ Indicates the provisioner property for the StorageClass.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -3172,6 +3365,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -3189,6 +3389,32 @@ Resources requirements. +### PulsarCluster.spec.autorecovery.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.autorecovery.securityContext @@ -3342,6 +3568,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + resizePolicy + []object + +
+ + false resources object @@ -3349,6 +3582,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + restartPolicy + string + +
+ + false securityContext object @@ -3831,6 +4071,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + sleep + object + +
+ + false tcpSocket object @@ -3955,6 +4202,32 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.autorecovery.sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.autorecovery.sidecars[index].lifecycle.postStart.tcpSocket @@ -4017,6 +4290,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + sleep + object + +
+ + false tcpSocket object @@ -4141,6 +4421,32 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.autorecovery.sidecars[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.autorecovery.sidecars[index].lifecycle.preStop.tcpSocket @@ -4764,6 +5070,39 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.autorecovery.sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.autorecovery.sidecars[index].resources @@ -4780,6 +5119,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. + claims + []object + +
+ + false + limits map[string]int or string @@ -4797,6 +5143,32 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.autorecovery.sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.autorecovery.sidecars[index].securityContext @@ -4819,6 +5191,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -4893,6 +5272,39 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.autorecovery.sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.autorecovery.sidecars[index].securityContext.capabilities @@ -5397,6 +5809,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -6101,6 +6520,13 @@ Indicates the provisioner property for the StorageClass.
false + + resizePolicy + []object + +
+ + false resources object @@ -6108,6 +6534,13 @@ Indicates the provisioner property for the StorageClass.
false + + restartPolicy + string + +
+ + false securityContext object @@ -6590,6 +7023,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -6714,6 +7154,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.bastion.initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bastion.initContainers[index].lifecycle.postStart.tcpSocket @@ -6776,6 +7242,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -6900,6 +7373,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.bastion.initContainers[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bastion.initContainers[index].lifecycle.preStop.tcpSocket @@ -7523,6 +8022,39 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.bastion.initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.bastion.initContainers[index].resources @@ -7539,6 +8071,13 @@ Indicates the provisioner property for the StorageClass. + claims + []object + +
+ + false + limits map[string]int or string @@ -7556,6 +8095,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.bastion.initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bastion.initContainers[index].securityContext @@ -7578,6 +8143,13 @@ Indicates the provisioner property for the StorageClass.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -7652,6 +8224,39 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.bastion.initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.bastion.initContainers[index].securityContext.capabilities @@ -8156,6 +8761,13 @@ Indicates the provisioner property for the StorageClass.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -8508,6 +9120,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -8525,6 +9144,32 @@ Resources requirements. +### PulsarCluster.spec.bastion.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bastion.securityContext @@ -8678,6 +9323,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + resizePolicy + []object + +
+ + false resources object @@ -8685,6 +9337,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + restartPolicy + string + +
+ + false securityContext object @@ -9167,6 +9826,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + sleep + object + +
+ + false tcpSocket object @@ -9291,6 +9957,32 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.bastion.sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bastion.sidecars[index].lifecycle.postStart.tcpSocket @@ -9353,6 +10045,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + sleep + object + +
+ + false tcpSocket object @@ -9477,6 +10176,32 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.bastion.sidecars[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bastion.sidecars[index].lifecycle.preStop.tcpSocket @@ -10100,6 +10825,39 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.bastion.sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.bastion.sidecars[index].resources @@ -10116,6 +10874,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. + claims + []object + +
+ + false + limits map[string]int or string @@ -10133,6 +10898,32 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.bastion.sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bastion.sidecars[index].securityContext @@ -10155,6 +10946,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -10229,6 +11027,39 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. +### PulsarCluster.spec.bastion.sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.bastion.sidecars[index].securityContext.capabilities @@ -10733,6 +11564,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -11147,6 +11985,13 @@ Mount additional volumes to the pod.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -12424,6 +13269,13 @@ Mount additional volumes to the pod.
false + + volumeAttributesClassName + string + +
+ + false volumeMode string @@ -12518,6 +13370,13 @@ Mount additional volumes to the pod.
false + + namespace + string + +
+ + false @@ -13272,6 +14131,13 @@ Mount additional volumes to the pod. + clusterTrustBundle + object + +
+ + false + configMap object @@ -13303,6 +14169,133 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.bookkeeper.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
labelSelectorobject +
+
false
namestring +
+
false
optionalboolean +
+
false
pathstring +
+
false
signerNamestring +
+
false
+ + +### PulsarCluster.spec.bookkeeper.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
matchExpressions[]object +
+
false
matchLabelsmap[string]string +
+
false
+ + +### PulsarCluster.spec.bookkeeper.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector.matchExpressions[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
keystring +
+
false
operatorstring +
+
false
values[]string +
+
false
+ + ### PulsarCluster.spec.bookkeeper.additionalVolumes.volumes[index].projected.sources[index].configMap @@ -14739,6 +15732,13 @@ Autoscaling config.
false + + resizePolicy + []object + +
+ + false resources object @@ -14746,6 +15746,13 @@ Autoscaling config.
false + + restartPolicy + string + +
+ + false securityContext object @@ -15228,6 +16235,13 @@ Autoscaling config.
false + + sleep + object + +
+ + false tcpSocket object @@ -15352,6 +16366,32 @@ Autoscaling config. +### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.postStart.tcpSocket @@ -15375,74 +16415,135 @@ Autoscaling config. false - port - int or string - -
- - false - - - - -### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop - - - - - - - - - - - - - - - - - + + + + + +
NameTypeDescriptionRequired
execobjectportint or string +
+
false
+ + +### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
execobject +
+
false
httpGetobject +
+
false
sleepobject +
+
false
tcpSocketobject +
+
false
+ + +### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop.exec + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
command[]string +
+
false
+ + +### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop.httpGet + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - -
NameTypeDescriptionRequired
hoststring +
+
false
httpHeaders[]object
false
httpGetobjectpathstring
false
tcpSocketobjectportint or string
false
- - -### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop.exec - - - - - - - - - - - - - - - - - + + + @@ -15451,7 +16552,7 @@ Autoscaling config.
NameTypeDescriptionRequired
command[]string
schemestring
-### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop.httpGet +### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop.httpGet.httpHeaders[index] @@ -15467,35 +16568,14 @@ Autoscaling config. - host - string - -
- - false - - httpHeaders - []object - -
- - false - - path + name string
false - port - int or string - -
- - false - - scheme + value string
@@ -15505,7 +16585,7 @@ Autoscaling config. -### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop.httpGet.httpHeaders[index] +### PulsarCluster.spec.bookkeeper.initContainers[index].lifecycle.preStop.sleep @@ -15521,15 +16601,8 @@ Autoscaling config. - name - string - -
- - false - - value - string + seconds + integer
@@ -16161,6 +17234,39 @@ Autoscaling config. +### PulsarCluster.spec.bookkeeper.initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.initContainers[index].resources @@ -16177,6 +17283,13 @@ Autoscaling config. + claims + []object + +
+ + false + limits map[string]int or string @@ -16194,6 +17307,32 @@ Autoscaling config. +### PulsarCluster.spec.bookkeeper.initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.initContainers[index].securityContext @@ -16216,6 +17355,13 @@ Autoscaling config.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -16290,6 +17436,39 @@ Autoscaling config. +### PulsarCluster.spec.bookkeeper.initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.initContainers[index].securityContext.capabilities @@ -16794,6 +17973,13 @@ Autoscaling config.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -17355,6 +18541,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -17372,6 +18565,32 @@ Resources requirements. +### PulsarCluster.spec.bookkeeper.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.securityContext @@ -17848,6 +19067,13 @@ Mount additional volumes to the pod.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -19125,6 +20351,13 @@ Mount additional volumes to the pod.
false + + volumeAttributesClassName + string + +
+ + false volumeMode string @@ -19219,6 +20452,13 @@ Mount additional volumes to the pod.
false + + namespace + string + +
+ + false @@ -19973,6 +21213,13 @@ Mount additional volumes to the pod. + clusterTrustBundle + object + +
+ + false + configMap object @@ -20004,6 +21251,133 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.bookkeeper.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
labelSelectorobject +
+
false
namestring +
+
false
optionalboolean +
+
false
pathstring +
+
false
signerNamestring +
+
false
+ + +### PulsarCluster.spec.bookkeeper.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
matchExpressions[]object +
+
false
matchLabelsmap[string]string +
+
false
+ + +### PulsarCluster.spec.bookkeeper.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector.matchExpressions[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
keystring +
+
false
operatorstring +
+
false
values[]string +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].additionalVolumes.volumes[index].projected.sources[index].configMap @@ -21398,6 +22772,13 @@ Autoscaling config.
false + + resizePolicy + []object + +
+ + false resources object @@ -21405,6 +22786,13 @@ Autoscaling config.
false + + restartPolicy + string + +
+ + false securityContext object @@ -21887,6 +23275,13 @@ Autoscaling config.
false + + sleep + object + +
+ + false tcpSocket object @@ -22011,6 +23406,32 @@ Autoscaling config. +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.postStart.tcpSocket @@ -22034,74 +23455,135 @@ Autoscaling config. false - port - int or string - -
- - false - - - - -### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop - - - - - - - - - - - - - - - - - + + + + + +
NameTypeDescriptionRequired
execobjectportint or string +
+
false
+ + +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
execobject +
+
false
httpGetobject +
+
false
sleepobject +
+
false
tcpSocketobject +
+
false
+ + +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop.exec + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
command[]string +
+
false
+ + +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop.httpGet + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - -
NameTypeDescriptionRequired
hoststring +
+
false
httpHeaders[]object
false
httpGetobjectpathstring
false
tcpSocketobjectportint or string
false
- - -### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop.exec - - - - - - - - - - - - - - - - - + + + @@ -22110,7 +23592,7 @@ Autoscaling config.
NameTypeDescriptionRequired
command[]string
schemestring
-### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop.httpGet +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop.httpGet.httpHeaders[index] @@ -22126,35 +23608,14 @@ Autoscaling config. - host - string - -
- - false - - httpHeaders - []object - -
- - false - - path + name string
false - port - int or string - -
- - false - - scheme + value string
@@ -22164,7 +23625,7 @@ Autoscaling config. -### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop.httpGet.httpHeaders[index] +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].lifecycle.preStop.sleep @@ -22180,15 +23641,8 @@ Autoscaling config. - name - string - -
- - false - - value - string + seconds + integer
@@ -22820,6 +24274,39 @@ Autoscaling config. +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].resources @@ -22836,6 +24323,13 @@ Autoscaling config. + claims + []object + +
+ + false + limits map[string]int or string @@ -22853,6 +24347,32 @@ Autoscaling config. +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].securityContext @@ -22875,6 +24395,13 @@ Autoscaling config.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -22949,6 +24476,39 @@ Autoscaling config. +### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].initContainers[index].securityContext.capabilities @@ -23453,6 +25013,13 @@ Autoscaling config.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -24014,6 +25581,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -24031,6 +25605,32 @@ Resources requirements. +### PulsarCluster.spec.bookkeeper.sets[key].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].securityContext @@ -24278,6 +25878,13 @@ Service configuration.
false + + resizePolicy + []object + +
+ + false resources object @@ -24285,6 +25892,13 @@ Service configuration.
false + + restartPolicy + string + +
+ + false securityContext object @@ -24767,6 +26381,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -24891,6 +26512,32 @@ Service configuration. +### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].lifecycle.postStart.tcpSocket @@ -24953,6 +26600,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -25077,6 +26731,32 @@ Service configuration. +### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].lifecycle.preStop.tcpSocket @@ -25700,6 +27380,39 @@ Service configuration. +### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].resources @@ -25716,6 +27429,13 @@ Service configuration. + claims + []object + +
+ + false + limits map[string]int or string @@ -25733,6 +27453,32 @@ Service configuration. +### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].securityContext @@ -25755,6 +27501,13 @@ Service configuration.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -25829,6 +27582,39 @@ Service configuration. +### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].sidecars[index].securityContext.capabilities @@ -26333,6 +28119,13 @@ Service configuration.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -26798,6 +28591,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + resizePolicy + []object + +
+ + false resources object @@ -26805,6 +28605,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + restartPolicy + string + +
+ + false securityContext object @@ -27287,6 +29094,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + sleep + object + +
+ + false tcpSocket object @@ -27411,6 +29225,32 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.postStart.tcpSocket @@ -27434,74 +29274,135 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i false - port - int or string - -
- - false - - - - -### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop - - - - - - - - - - - - - - - - - + + + + + +
NameTypeDescriptionRequired
execobjectportint or string +
+
false
+ + +### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
execobject +
+
false
httpGetobject +
+
false
sleepobject +
+
false
tcpSocketobject +
+
false
+ + +### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop.exec + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
command[]string +
+
false
+ + +### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop.httpGet + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - -
NameTypeDescriptionRequired
hoststring +
+
false
httpHeaders[]object
false
httpGetobjectpathstring
false
tcpSocketobjectportint or string
false
- - -### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop.exec - - - - - - - - - - - - - - - - - + + + @@ -27510,7 +29411,7 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
NameTypeDescriptionRequired
command[]string
schemestring
-### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop.httpGet +### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop.httpGet.httpHeaders[index] @@ -27526,35 +29427,14 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i - host - string - -
- - false - - httpHeaders - []object - -
- - false - - path + name string
false - port - int or string - -
- - false - - scheme + value string
@@ -27564,7 +29444,7 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i -### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop.httpGet.httpHeaders[index] +### PulsarCluster.spec.bookkeeper.sidecars[index].lifecycle.preStop.sleep @@ -27580,15 +29460,8 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i - name - string - -
- - false - - value - string + seconds + integer
@@ -28220,6 +30093,39 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.bookkeeper.sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sidecars[index].resources @@ -28236,6 +30142,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i + claims + []object + +
+ + false + limits map[string]int or string @@ -28253,6 +30166,32 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.bookkeeper.sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sidecars[index].securityContext @@ -28275,6 +30214,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + appArmorProfile + object + +
+ + false capabilities object @@ -28349,6 +30295,39 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.bookkeeper.sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sidecars[index].securityContext.capabilities @@ -28853,6 +30832,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -29561,6 +31547,13 @@ Mount additional volumes to the pod.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -30838,6 +32831,13 @@ Mount additional volumes to the pod.
false + + volumeAttributesClassName + string + +
+ + false volumeMode string @@ -30892,41 +32892,48 @@ Mount additional volumes to the pod.
false - - - - -### PulsarCluster.spec.broker.additionalVolumes.volumes[index].ephemeral.volumeClaimTemplate.spec.dataSourceRef - - - - - - - - - - - - - - - - - - - - - - - - + +
NameTypeDescriptionRequired
apiGroupstring -
-
false
kindstring -
-
false
+ + +### PulsarCluster.spec.broker.additionalVolumes.volumes[index].ephemeral.volumeClaimTemplate.spec.dataSourceRef + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
NameTypeDescriptionRequired
apiGroupstring +
+
false
kindstring +
+
false
namestring +
+
false
namenamespace string
@@ -31686,6 +33693,13 @@ Mount additional volumes to the pod.
clusterTrustBundleobject +
+
false
configMap object @@ -31717,6 +33731,133 @@ Mount additional volumes to the pod.
+### PulsarCluster.spec.broker.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
labelSelectorobject +
+
false
namestring +
+
false
optionalboolean +
+
false
pathstring +
+
false
signerNamestring +
+
false
+ + +### PulsarCluster.spec.broker.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
matchExpressions[]object +
+
false
matchLabelsmap[string]string +
+
false
+ + +### PulsarCluster.spec.broker.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector.matchExpressions[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
keystring +
+
false
operatorstring +
+
false
values[]string +
+
false
+ + ### PulsarCluster.spec.broker.additionalVolumes.volumes[index].projected.sources[index].configMap @@ -33116,6 +35257,13 @@ Autoscaling config.
false + + resizePolicy + []object + +
+ + false resources object @@ -33123,6 +35271,13 @@ Autoscaling config.
false + + restartPolicy + string + +
+ + false securityContext object @@ -33605,6 +35760,13 @@ Autoscaling config.
false + + sleep + object + +
+ + false tcpSocket object @@ -33729,6 +35891,32 @@ Autoscaling config. +### PulsarCluster.spec.broker.initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.broker.initContainers[index].lifecycle.postStart.tcpSocket @@ -33791,6 +35979,13 @@ Autoscaling config.
false + + sleep + object + +
+ + false tcpSocket object @@ -33915,6 +36110,32 @@ Autoscaling config. +### PulsarCluster.spec.broker.initContainers[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.broker.initContainers[index].lifecycle.preStop.tcpSocket @@ -34538,6 +36759,39 @@ Autoscaling config. +### PulsarCluster.spec.broker.initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.broker.initContainers[index].resources @@ -34554,6 +36808,13 @@ Autoscaling config. + claims + []object + +
+ + false + limits map[string]int or string @@ -34571,6 +36832,32 @@ Autoscaling config. +### PulsarCluster.spec.broker.initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.broker.initContainers[index].securityContext @@ -34593,6 +36880,13 @@ Autoscaling config.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -34667,6 +36961,39 @@ Autoscaling config. +### PulsarCluster.spec.broker.initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.broker.initContainers[index].securityContext.capabilities @@ -35171,6 +37498,13 @@ Autoscaling config.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -35779,6 +38113,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -35796,6 +38137,32 @@ Resources requirements. +### PulsarCluster.spec.broker.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.broker.securityContext @@ -36279,6 +38646,13 @@ Mount additional volumes to the pod.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -37556,6 +39930,13 @@ Mount additional volumes to the pod.
false + + volumeAttributesClassName + string + +
+ + false volumeMode string @@ -37650,6 +40031,13 @@ Mount additional volumes to the pod.
false + + namespace + string + +
+ + false @@ -38404,6 +40792,13 @@ Mount additional volumes to the pod. + clusterTrustBundle + object + +
+ + false + configMap object @@ -38435,6 +40830,133 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.broker.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
labelSelectorobject +
+
false
namestring +
+
false
optionalboolean +
+
false
pathstring +
+
false
signerNamestring +
+
false
+ + +### PulsarCluster.spec.broker.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
matchExpressions[]object +
+
false
matchLabelsmap[string]string +
+
false
+ + +### PulsarCluster.spec.broker.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector.matchExpressions[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
keystring +
+
false
operatorstring +
+
false
values[]string +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].additionalVolumes.volumes[index].projected.sources[index].configMap @@ -39834,6 +42356,13 @@ Autoscaling config.
false + + resizePolicy + []object + +
+ + false resources object @@ -39841,6 +42370,13 @@ Autoscaling config.
false + + restartPolicy + string + +
+ + false securityContext object @@ -40323,6 +42859,13 @@ Autoscaling config.
false + + sleep + object + +
+ + false tcpSocket object @@ -40447,6 +42990,32 @@ Autoscaling config. +### PulsarCluster.spec.broker.sets[key].initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].initContainers[index].lifecycle.postStart.tcpSocket @@ -40509,6 +43078,13 @@ Autoscaling config.
false + + sleep + object + +
+ + false tcpSocket object @@ -40633,6 +43209,32 @@ Autoscaling config. +### PulsarCluster.spec.broker.sets[key].initContainers[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].initContainers[index].lifecycle.preStop.tcpSocket @@ -41256,6 +43858,39 @@ Autoscaling config. +### PulsarCluster.spec.broker.sets[key].initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].initContainers[index].resources @@ -41272,6 +43907,13 @@ Autoscaling config. + claims + []object + +
+ + false + limits map[string]int or string @@ -41289,6 +43931,32 @@ Autoscaling config. +### PulsarCluster.spec.broker.sets[key].initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].initContainers[index].securityContext @@ -41311,6 +43979,13 @@ Autoscaling config.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -41385,6 +44060,39 @@ Autoscaling config. +### PulsarCluster.spec.broker.sets[key].initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].initContainers[index].securityContext.capabilities @@ -41889,6 +44597,13 @@ Autoscaling config.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -42497,6 +45212,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -42514,6 +45236,32 @@ Resources requirements. +### PulsarCluster.spec.broker.sets[key].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].securityContext @@ -42768,6 +45516,13 @@ Service configuration.
false + + resizePolicy + []object + +
+ + false resources object @@ -42775,6 +45530,13 @@ Service configuration.
false + + restartPolicy + string + +
+ + false securityContext object @@ -43257,6 +46019,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -43381,6 +46150,32 @@ Service configuration. +### PulsarCluster.spec.broker.sets[key].sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].sidecars[index].lifecycle.postStart.tcpSocket @@ -43443,6 +46238,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -43567,6 +46369,32 @@ Service configuration. +### PulsarCluster.spec.broker.sets[key].sidecars[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].sidecars[index].lifecycle.preStop.tcpSocket @@ -44190,6 +47018,39 @@ Service configuration. +### PulsarCluster.spec.broker.sets[key].sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].sidecars[index].resources @@ -44206,6 +47067,13 @@ Service configuration. + claims + []object + +
+ + false + limits map[string]int or string @@ -44223,6 +47091,32 @@ Service configuration. +### PulsarCluster.spec.broker.sets[key].sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].sidecars[index].securityContext @@ -44245,6 +47139,13 @@ Service configuration.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -44319,6 +47220,39 @@ Service configuration. +### PulsarCluster.spec.broker.sets[key].sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].sidecars[index].securityContext.capabilities @@ -44823,6 +47757,13 @@ Service configuration.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -44977,6 +47918,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -44994,6 +47942,32 @@ Resources requirements. +### PulsarCluster.spec.broker.sets[key].transactions.initJob.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].updateStrategy @@ -45152,6 +48126,13 @@ Update strategy for the StatefulSet.
false + + resizePolicy + []object + +
+ + false resources object @@ -45159,6 +48140,13 @@ Update strategy for the StatefulSet.
false + + restartPolicy + string + +
+ + false securityContext object @@ -45641,6 +48629,13 @@ Update strategy for the StatefulSet.
false + + sleep + object + +
+ + false tcpSocket object @@ -45765,6 +48760,32 @@ Update strategy for the StatefulSet. +### PulsarCluster.spec.broker.sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.broker.sidecars[index].lifecycle.postStart.tcpSocket @@ -45827,6 +48848,13 @@ Update strategy for the StatefulSet.
false + + sleep + object + +
+ + false tcpSocket object @@ -45951,6 +48979,32 @@ Update strategy for the StatefulSet. +### PulsarCluster.spec.broker.sidecars[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.broker.sidecars[index].lifecycle.preStop.tcpSocket @@ -46574,6 +49628,39 @@ Update strategy for the StatefulSet. +### PulsarCluster.spec.broker.sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.broker.sidecars[index].resources @@ -46590,6 +49677,13 @@ Update strategy for the StatefulSet. + claims + []object + +
+ + false + limits map[string]int or string @@ -46607,6 +49701,32 @@ Update strategy for the StatefulSet. +### PulsarCluster.spec.broker.sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.broker.sidecars[index].securityContext @@ -46629,6 +49749,13 @@ Update strategy for the StatefulSet.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -46703,6 +49830,39 @@ Update strategy for the StatefulSet. +### PulsarCluster.spec.broker.sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.broker.sidecars[index].securityContext.capabilities @@ -47207,6 +50367,13 @@ Update strategy for the StatefulSet.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -47361,6 +50528,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -47378,6 +50552,32 @@ Resources requirements. +### PulsarCluster.spec.broker.transactions.initJob.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.broker.updateStrategy @@ -47751,6 +50951,13 @@ Mount additional volumes to the pod.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -49028,6 +52235,13 @@ Mount additional volumes to the pod.
false + + volumeAttributesClassName + string + +
+ + false volumeMode string @@ -49122,6 +52336,13 @@ Mount additional volumes to the pod.
false + + namespace + string + +
+ + false @@ -49876,6 +53097,13 @@ Mount additional volumes to the pod. + clusterTrustBundle + object + +
+ + false + configMap object @@ -49907,6 +53135,133 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.functionsWorker.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
labelSelectorobject +
+
false
namestring +
+
false
optionalboolean +
+
false
pathstring +
+
false
signerNamestring +
+
false
+ + +### PulsarCluster.spec.functionsWorker.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
matchExpressions[]object +
+
false
matchLabelsmap[string]string +
+
false
+ + +### PulsarCluster.spec.functionsWorker.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector.matchExpressions[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
keystring +
+
false
operatorstring +
+
false
values[]string +
+
false
+ + ### PulsarCluster.spec.functionsWorker.additionalVolumes.volumes[index].projected.sources[index].configMap @@ -51201,6 +54556,13 @@ Indicates the provisioner property for the StorageClass.
false + + resizePolicy + []object + +
+ + false resources object @@ -51208,6 +54570,13 @@ Indicates the provisioner property for the StorageClass.
false + + restartPolicy + string + +
+ + false securityContext object @@ -51690,6 +55059,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -51814,6 +55190,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.functionsWorker.initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.functionsWorker.initContainers[index].lifecycle.postStart.tcpSocket @@ -51876,6 +55278,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -52000,6 +55409,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.functionsWorker.initContainers[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.functionsWorker.initContainers[index].lifecycle.preStop.tcpSocket @@ -52623,6 +56058,39 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.functionsWorker.initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.functionsWorker.initContainers[index].resources @@ -52639,6 +56107,13 @@ Indicates the provisioner property for the StorageClass. + claims + []object + +
+ + false + limits map[string]int or string @@ -52656,6 +56131,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.functionsWorker.initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.functionsWorker.initContainers[index].securityContext @@ -52678,6 +56179,13 @@ Indicates the provisioner property for the StorageClass.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -52752,6 +56260,39 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.functionsWorker.initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.functionsWorker.initContainers[index].securityContext.capabilities @@ -53256,6 +56797,13 @@ Indicates the provisioner property for the StorageClass.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -53951,6 +57499,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -53968,6 +57523,32 @@ Resources requirements. +### PulsarCluster.spec.functionsWorker.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.functionsWorker.securityContext @@ -54222,6 +57803,13 @@ Service configuration.
false + + resizePolicy + []object + +
+ + false resources object @@ -54229,6 +57817,13 @@ Service configuration.
false + + restartPolicy + string + +
+ + false securityContext object @@ -54711,6 +58306,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -54835,6 +58437,32 @@ Service configuration. +### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.postStart.tcpSocket @@ -54858,74 +58486,135 @@ Service configuration. false - port - int or string - -
- - false - - - - -### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop - - - - - - - - - - - - - - - - - + + + + + +
NameTypeDescriptionRequired
execobjectportint or string +
+
false
+ + +### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
execobject +
+
false
httpGetobject +
+
false
sleepobject +
+
false
tcpSocketobject +
+
false
+ + +### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop.exec + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
command[]string +
+
false
+ + +### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop.httpGet + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - -
NameTypeDescriptionRequired
hoststring +
+
false
httpHeaders[]object
false
httpGetobjectpathstring
false
tcpSocketobjectportint or string
false
- - -### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop.exec - - - - - - - - - - - - - - - - - + + + @@ -54934,7 +58623,7 @@ Service configuration.
NameTypeDescriptionRequired
command[]string
schemestring
-### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop.httpGet +### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop.httpGet.httpHeaders[index] @@ -54950,35 +58639,14 @@ Service configuration. - host - string - -
- - false - - httpHeaders - []object - -
- - false - - path + name string
false - port - int or string - -
- - false - - scheme + value string
@@ -54988,7 +58656,7 @@ Service configuration. -### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop.httpGet.httpHeaders[index] +### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle.preStop.sleep @@ -55004,15 +58672,8 @@ Service configuration. - name - string - -
- - false - - value - string + seconds + integer
@@ -55644,6 +59305,39 @@ Service configuration. +### PulsarCluster.spec.functionsWorker.sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.functionsWorker.sidecars[index].resources @@ -55660,6 +59354,13 @@ Service configuration. + claims + []object + +
+ + false + limits map[string]int or string @@ -55677,6 +59378,32 @@ Service configuration. +### PulsarCluster.spec.functionsWorker.sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.functionsWorker.sidecars[index].securityContext @@ -55699,6 +59426,13 @@ Service configuration.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -55773,6 +59507,39 @@ Service configuration. +### PulsarCluster.spec.functionsWorker.sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.functionsWorker.sidecars[index].securityContext.capabilities @@ -56277,6 +60044,13 @@ Service configuration.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -58737,6 +62511,13 @@ Mount additional volumes to the pod.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -60014,6 +63795,13 @@ Mount additional volumes to the pod.
false + + volumeAttributesClassName + string + +
+ + false volumeMode string @@ -60068,41 +63856,48 @@ Mount additional volumes to the pod.
false - - - - -### PulsarCluster.spec.proxy.additionalVolumes.volumes[index].ephemeral.volumeClaimTemplate.spec.dataSourceRef - - - - - - - - - - - - - - - - - - - - - - - - + +
NameTypeDescriptionRequired
apiGroupstring -
-
false
kindstring -
-
false
+ + +### PulsarCluster.spec.proxy.additionalVolumes.volumes[index].ephemeral.volumeClaimTemplate.spec.dataSourceRef + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
NameTypeDescriptionRequired
apiGroupstring +
+
false
kindstring +
+
false
namestring +
+
false
namenamespace string
@@ -60862,6 +64657,13 @@ Mount additional volumes to the pod.
clusterTrustBundleobject +
+
false
configMap object @@ -60893,6 +64695,133 @@ Mount additional volumes to the pod.
+### PulsarCluster.spec.proxy.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
labelSelectorobject +
+
false
namestring +
+
false
optionalboolean +
+
false
pathstring +
+
false
signerNamestring +
+
false
+ + +### PulsarCluster.spec.proxy.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
matchExpressions[]object +
+
false
matchLabelsmap[string]string +
+
false
+ + +### PulsarCluster.spec.proxy.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector.matchExpressions[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
keystring +
+
false
operatorstring +
+
false
values[]string +
+
false
+ + ### PulsarCluster.spec.proxy.additionalVolumes.volumes[index].projected.sources[index].configMap @@ -62187,6 +66116,13 @@ Indicates the provisioner property for the StorageClass.
false + + resizePolicy + []object + +
+ + false resources object @@ -62194,6 +66130,13 @@ Indicates the provisioner property for the StorageClass.
false + + restartPolicy + string + +
+ + false securityContext object @@ -62676,6 +66619,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -62800,6 +66750,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.proxy.initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.proxy.initContainers[index].lifecycle.postStart.tcpSocket @@ -62862,6 +66838,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -62986,6 +66969,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.proxy.initContainers[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.proxy.initContainers[index].lifecycle.preStop.tcpSocket @@ -63609,6 +67618,39 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.proxy.initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.proxy.initContainers[index].resources @@ -63625,6 +67667,13 @@ Indicates the provisioner property for the StorageClass. + claims + []object + +
+ + false + limits map[string]int or string @@ -63642,6 +67691,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.proxy.initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.proxy.initContainers[index].securityContext @@ -63664,6 +67739,13 @@ Indicates the provisioner property for the StorageClass.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -63738,6 +67820,39 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.proxy.initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.proxy.initContainers[index].securityContext.capabilities @@ -64242,6 +68357,13 @@ Indicates the provisioner property for the StorageClass.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -64836,6 +68958,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -64853,6 +68982,32 @@ Resources requirements. +### PulsarCluster.spec.proxy.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.proxy.securityContext @@ -65343,6 +69498,13 @@ Mount additional volumes to the pod.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -66620,6 +70782,13 @@ Mount additional volumes to the pod.
false + + volumeAttributesClassName + string + +
+ + false volumeMode string @@ -66714,6 +70883,13 @@ Mount additional volumes to the pod.
false + + namespace + string + +
+ + false @@ -67468,6 +71644,13 @@ Mount additional volumes to the pod. + clusterTrustBundle + object + +
+ + false + configMap object @@ -67499,6 +71682,133 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.proxy.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
labelSelectorobject +
+
false
namestring +
+
false
optionalboolean +
+
false
pathstring +
+
false
signerNamestring +
+
false
+ + +### PulsarCluster.spec.proxy.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
matchExpressions[]object +
+
false
matchLabelsmap[string]string +
+
false
+ + +### PulsarCluster.spec.proxy.sets[key].additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector.matchExpressions[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
keystring +
+
false
operatorstring +
+
false
values[]string +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].additionalVolumes.volumes[index].projected.sources[index].configMap @@ -68793,6 +73103,13 @@ Indicates the provisioner property for the StorageClass.
false + + resizePolicy + []object + +
+ + false resources object @@ -68800,6 +73117,13 @@ Indicates the provisioner property for the StorageClass.
false + + restartPolicy + string + +
+ + false securityContext object @@ -69282,6 +73606,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -69406,6 +73737,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.proxy.sets[key].initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].initContainers[index].lifecycle.postStart.tcpSocket @@ -69468,6 +73825,13 @@ Indicates the provisioner property for the StorageClass.
false + + sleep + object + +
+ + false tcpSocket object @@ -69592,6 +73956,32 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.proxy.sets[key].initContainers[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].initContainers[index].lifecycle.preStop.tcpSocket @@ -69883,61 +74273,263 @@ Indicates the provisioner property for the StorageClass. false - port - int or string - -
- - false - - - - -### PulsarCluster.spec.proxy.sets[key].initContainers[index].ports[index] - - - - - - - - - - - - - - - - - + + + + + +
NameTypeDescriptionRequired
containerPortintegerportint or string +
+
false
+ + +### PulsarCluster.spec.proxy.sets[key].initContainers[index].ports[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
containerPortinteger +
+
false
hostIPstring +
+
false
hostPortinteger +
+
false
namestring +
+
false
protocolstring +
+
false
+ + +### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
execobject +
+
false
failureThresholdinteger +
+
false
grpcobject +
+
false
httpGetobject +
+
false
initialDelaySecondsinteger +
+
false
periodSecondsinteger +
+
false
successThresholdinteger +
+
false
tcpSocketobject +
+
false
terminationGracePeriodSecondsinteger +
+
false
timeoutSecondsinteger +
+
false
+ + +### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.exec + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
command[]string +
+
false
+ + +### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.grpc + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
portinteger +
+
false
servicestring +
+
false
+ + +### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.httpGet + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + - +
NameTypeDescriptionRequired
hoststring +
+
false
httpHeaders[]object
false
hostIPpath string
false
hostPortinteger -
-
false
namestringportint or string
false
protocolscheme string
@@ -69947,122 +74539,7 @@ Indicates the provisioner property for the StorageClass.
-### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
execobject -
-
false
failureThresholdinteger -
-
false
grpcobject -
-
false
httpGetobject -
-
false
initialDelaySecondsinteger -
-
false
periodSecondsinteger -
-
false
successThresholdinteger -
-
false
tcpSocketobject -
-
false
terminationGracePeriodSecondsinteger -
-
false
timeoutSecondsinteger -
-
false
- - -### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.exec - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
command[]string -
-
false
- - -### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.grpc +### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.httpGet.httpHeaders[index] @@ -70078,14 +74555,14 @@ Indicates the provisioner property for the StorageClass. - port - integer + name + string
false - service + value string
@@ -70095,7 +74572,7 @@ Indicates the provisioner property for the StorageClass. -### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.httpGet +### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.tcpSocket @@ -70117,20 +74594,6 @@ Indicates the provisioner property for the StorageClass.
false - - httpHeaders - []object - -
- - false - - path - string - -
- - false port int or string @@ -70138,18 +74601,11 @@ Indicates the provisioner property for the StorageClass.
false - - scheme - string - -
- - false -### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.httpGet.httpHeaders[index] +### PulsarCluster.spec.proxy.sets[key].initContainers[index].resizePolicy[index] @@ -70165,14 +74621,14 @@ Indicates the provisioner property for the StorageClass. - name + resourceName string
false - value + restartPolicy string
@@ -70182,7 +74638,7 @@ Indicates the provisioner property for the StorageClass. -### PulsarCluster.spec.proxy.sets[key].initContainers[index].readinessProbe.tcpSocket +### PulsarCluster.spec.proxy.sets[key].initContainers[index].resources @@ -70198,15 +74654,22 @@ Indicates the provisioner property for the StorageClass. - host - string + claims + []object
false - port - int or string + limits + map[string]int or string + +
+ + false + + requests + map[string]int or string
@@ -70215,7 +74678,7 @@ Indicates the provisioner property for the StorageClass. -### PulsarCluster.spec.proxy.sets[key].initContainers[index].resources +### PulsarCluster.spec.proxy.sets[key].initContainers[index].resources.claims[index] @@ -70231,15 +74694,8 @@ Indicates the provisioner property for the StorageClass. - limits - map[string]int or string - -
- - false - - requests - map[string]int or string + name + string
@@ -70270,6 +74726,13 @@ Indicates the provisioner property for the StorageClass.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -70344,6 +74807,39 @@ Indicates the provisioner property for the StorageClass. +### PulsarCluster.spec.proxy.sets[key].initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].initContainers[index].securityContext.capabilities @@ -70848,6 +75344,13 @@ Indicates the provisioner property for the StorageClass.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -71442,6 +75945,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -71459,6 +75969,32 @@ Resources requirements. +### PulsarCluster.spec.proxy.sets[key].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].securityContext @@ -71734,6 +76270,13 @@ Service configuration.
false + + resizePolicy + []object + +
+ + false resources object @@ -71741,6 +76284,13 @@ Service configuration.
false + + restartPolicy + string + +
+ + false securityContext object @@ -72223,6 +76773,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -72347,6 +76904,32 @@ Service configuration. +### PulsarCluster.spec.proxy.sets[key].sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].sidecars[index].lifecycle.postStart.tcpSocket @@ -72409,6 +76992,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -72533,6 +77123,32 @@ Service configuration. +### PulsarCluster.spec.proxy.sets[key].sidecars[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].sidecars[index].lifecycle.preStop.tcpSocket @@ -73156,6 +77772,39 @@ Service configuration. +### PulsarCluster.spec.proxy.sets[key].sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].sidecars[index].resources @@ -73172,6 +77821,13 @@ Service configuration. + claims + []object + +
+ + false + limits map[string]int or string @@ -73189,6 +77845,32 @@ Service configuration. +### PulsarCluster.spec.proxy.sets[key].sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].sidecars[index].securityContext @@ -73211,6 +77893,13 @@ Service configuration.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -73285,6 +77974,39 @@ Service configuration. +### PulsarCluster.spec.proxy.sets[key].sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].sidecars[index].securityContext.capabilities @@ -73789,6 +78511,13 @@ Service configuration.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -74159,6 +78888,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -74176,6 +78912,32 @@ Resources requirements. +### PulsarCluster.spec.proxy.sets[key].webSocket.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.proxy.sidecars[index] @@ -74268,6 +79030,13 @@ Resources requirements.
false + + resizePolicy + []object + +
+ + false resources object @@ -74275,6 +79044,13 @@ Resources requirements.
false + + restartPolicy + string + +
+ + false securityContext object @@ -74757,6 +79533,13 @@ Resources requirements.
false + + sleep + object + +
+ + false tcpSocket object @@ -74881,6 +79664,32 @@ Resources requirements. +### PulsarCluster.spec.proxy.sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.proxy.sidecars[index].lifecycle.postStart.tcpSocket @@ -74943,6 +79752,13 @@ Resources requirements.
false + + sleep + object + +
+ + false tcpSocket object @@ -75067,6 +79883,32 @@ Resources requirements. +### PulsarCluster.spec.proxy.sidecars[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.proxy.sidecars[index].lifecycle.preStop.tcpSocket @@ -75690,6 +80532,39 @@ Resources requirements. +### PulsarCluster.spec.proxy.sidecars[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.proxy.sidecars[index].resources @@ -75706,6 +80581,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -75723,6 +80605,32 @@ Resources requirements. +### PulsarCluster.spec.proxy.sidecars[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.proxy.sidecars[index].securityContext @@ -75745,6 +80653,13 @@ Resources requirements.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -75819,6 +80734,39 @@ Resources requirements. +### PulsarCluster.spec.proxy.sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.proxy.sidecars[index].securityContext.capabilities @@ -76323,6 +81271,13 @@ Resources requirements.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -76693,6 +81648,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -76710,6 +81672,32 @@ Resources requirements. +### PulsarCluster.spec.proxy.webSocket.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.zookeeper @@ -77010,6 +81998,13 @@ Mount additional volumes to the pod.
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -78287,6 +83282,13 @@ Mount additional volumes to the pod.
false + + volumeAttributesClassName + string + +
+ + false volumeMode string @@ -78381,6 +83383,13 @@ Mount additional volumes to the pod.
false + + namespace + string + +
+ + false @@ -79135,6 +84144,13 @@ Mount additional volumes to the pod. + clusterTrustBundle + object + +
+ + false + configMap object @@ -79166,6 +84182,133 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.zookeeper.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
labelSelectorobject +
+
false
namestring +
+
false
optionalboolean +
+
false
pathstring +
+
false
signerNamestring +
+
false
+ + +### PulsarCluster.spec.zookeeper.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
matchExpressions[]object +
+
false
matchLabelsmap[string]string +
+
false
+ + +### PulsarCluster.spec.zookeeper.additionalVolumes.volumes[index].projected.sources[index].clusterTrustBundle.labelSelector.matchExpressions[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
keystring +
+
false
operatorstring +
+
false
values[]string +
+
false
+ + ### PulsarCluster.spec.zookeeper.additionalVolumes.volumes[index].projected.sources[index].configMap @@ -80561,6 +85704,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + resizePolicy + []object + +
+ + false resources object @@ -80568,6 +85718,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + restartPolicy + string + +
+ + false securityContext object @@ -81050,6 +86207,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + sleep + object + +
+ + false tcpSocket object @@ -81174,6 +86338,32 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.zookeeper.initContainers[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.zookeeper.initContainers[index].lifecycle.postStart.tcpSocket @@ -81236,6 +86426,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + sleep + object + +
+ + false tcpSocket object @@ -81360,6 +86557,32 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.zookeeper.initContainers[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.zookeeper.initContainers[index].lifecycle.preStop.tcpSocket @@ -81983,6 +87206,39 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.zookeeper.initContainers[index].resizePolicy[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
resourceNamestring +
+
false
restartPolicystring +
+
false
+ + ### PulsarCluster.spec.zookeeper.initContainers[index].resources @@ -81999,6 +87255,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i + claims + []object + +
+ + false + limits map[string]int or string @@ -82016,6 +87279,32 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.zookeeper.initContainers[index].resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.zookeeper.initContainers[index].securityContext @@ -82038,6 +87327,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + appArmorProfile + object + +
+ + false capabilities object @@ -82112,6 +87408,39 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i +### PulsarCluster.spec.zookeeper.initContainers[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.zookeeper.initContainers[index].securityContext.capabilities @@ -82616,6 +87945,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + recursiveReadOnly + string + +
+ + false subPath string @@ -82683,6 +88019,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -82700,6 +88043,32 @@ Resources requirements. +### PulsarCluster.spec.zookeeper.metadataInitializationJob.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.zookeeper.nodeAffinity @@ -83243,6 +88612,13 @@ Resources requirements. + claims + []object + +
+ + false + limits map[string]int or string @@ -83260,6 +88636,32 @@ Resources requirements. +### PulsarCluster.spec.zookeeper.resources.claims[index] + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
+ + ### PulsarCluster.spec.zookeeper.securityContext @@ -83507,6 +88909,13 @@ Service configuration.
false + + resizePolicy + []object + +
+ + false resources object @@ -83514,6 +88923,13 @@ Service configuration.
false + + restartPolicy + string + +
+ + false securityContext object @@ -83996,6 +89412,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -84120,6 +89543,32 @@ Service configuration. +### PulsarCluster.spec.zookeeper.sidecars[index].lifecycle.postStart.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.zookeeper.sidecars[index].lifecycle.postStart.tcpSocket @@ -84182,6 +89631,13 @@ Service configuration.
false + + sleep + object + +
+ + false tcpSocket object @@ -84306,6 +89762,32 @@ Service configuration. +### PulsarCluster.spec.zookeeper.sidecars[index].lifecycle.preStop.sleep + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
secondsinteger +
+
false
+ + ### PulsarCluster.spec.zookeeper.sidecars[index].lifecycle.preStop.tcpSocket @@ -84597,61 +90079,263 @@ Service configuration. false - port - int or string - -
- - false - - - - -### PulsarCluster.spec.zookeeper.sidecars[index].ports[index] - - - - - - - - - - - - - - - - - + + + + + +
NameTypeDescriptionRequired
containerPortintegerportint or string +
+
false
+ + +### PulsarCluster.spec.zookeeper.sidecars[index].ports[index] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
containerPortinteger +
+
false
hostIPstring +
+
false
hostPortinteger +
+
false
namestring +
+
false
protocolstring +
+
false
+ + +### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
execobject +
+
false
failureThresholdinteger +
+
false
grpcobject +
+
false
httpGetobject +
+
false
initialDelaySecondsinteger +
+
false
periodSecondsinteger +
+
false
successThresholdinteger +
+
false
tcpSocketobject +
+
false
terminationGracePeriodSecondsinteger +
+
false
timeoutSecondsinteger +
+
false
+ + +### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.exec + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
command[]string +
+
false
+ + +### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.grpc + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
portinteger +
+
false
servicestring +
+
false
+ + +### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.httpGet + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + - +
NameTypeDescriptionRequired
hoststring +
+
false
httpHeaders[]object
false
hostIPpath string
false
hostPortinteger -
-
false
namestringportint or string
false
protocolscheme string
@@ -84661,122 +90345,7 @@ Service configuration.
-### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
execobject -
-
false
failureThresholdinteger -
-
false
grpcobject -
-
false
httpGetobject -
-
false
initialDelaySecondsinteger -
-
false
periodSecondsinteger -
-
false
successThresholdinteger -
-
false
tcpSocketobject -
-
false
terminationGracePeriodSecondsinteger -
-
false
timeoutSecondsinteger -
-
false
- - -### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.exec - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionRequired
command[]string -
-
false
- - -### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.grpc +### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.httpGet.httpHeaders[index] @@ -84792,14 +90361,14 @@ Service configuration. - port - integer + name + string
false - service + value string
@@ -84809,7 +90378,7 @@ Service configuration. -### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.httpGet +### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.tcpSocket @@ -84831,20 +90400,6 @@ Service configuration.
false - - httpHeaders - []object - -
- - false - - path - string - -
- - false port int or string @@ -84852,18 +90407,11 @@ Service configuration.
false - - scheme - string - -
- - false -### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.httpGet.httpHeaders[index] +### PulsarCluster.spec.zookeeper.sidecars[index].resizePolicy[index] @@ -84879,14 +90427,14 @@ Service configuration. - name + resourceName string
false - value + restartPolicy string
@@ -84896,7 +90444,7 @@ Service configuration. -### PulsarCluster.spec.zookeeper.sidecars[index].readinessProbe.tcpSocket +### PulsarCluster.spec.zookeeper.sidecars[index].resources @@ -84912,15 +90460,22 @@ Service configuration. - host - string + claims + []object
false - port - int or string + limits + map[string]int or string + +
+ + false + + requests + map[string]int or string
@@ -84929,7 +90484,7 @@ Service configuration. -### PulsarCluster.spec.zookeeper.sidecars[index].resources +### PulsarCluster.spec.zookeeper.sidecars[index].resources.claims[index] @@ -84945,15 +90500,8 @@ Service configuration. - limits - map[string]int or string - -
- - false - - requests - map[string]int or string + name + string
@@ -84984,6 +90532,13 @@ Service configuration.
false + + appArmorProfile + object + +
+ + false capabilities object @@ -85058,6 +90613,39 @@ Service configuration. +### PulsarCluster.spec.zookeeper.sidecars[index].securityContext.appArmorProfile + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
localhostProfilestring +
+
false
typestring +
+
false
+ + ### PulsarCluster.spec.zookeeper.sidecars[index].securityContext.capabilities @@ -85562,6 +91150,13 @@ Service configuration.
false + + recursiveReadOnly + string + +
+ + false subPath string diff --git a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml index 79a4b958..5e050900 100644 --- a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml @@ -1,20 +1,20 @@ # Generated by Fabric8 CRDGenerator, manual edits might get overwritten! -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" metadata: - name: autorecoveries.kaap.oss.datastax.com + name: "autorecoveries.kaap.oss.datastax.com" spec: - group: kaap.oss.datastax.com + group: "kaap.oss.datastax.com" names: - kind: Autorecovery - plural: autorecoveries + kind: "Autorecovery" + plural: "autorecoveries" shortNames: - - au - - aur - singular: autorecovery - scope: Namespaced + - "au" + - "aur" + singular: "autorecovery" + scope: "Namespaced" versions: - - name: v1beta1 + - name: "v1beta1" schema: openAPIV3Schema: properties: @@ -22,1283 +22,1433 @@ spec: properties: autorecovery: properties: + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" config: - description: Configuration. + description: "Configuration." x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" gracePeriod: - description: Termination grace period in seconds. + description: "Termination grace period in seconds." minimum: 0.0 - type: integer + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" imagePullSecrets: - description: Image pull secrets. + description: "Image pull secrets." items: properties: name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object + type: "integer" + type: "object" + stdin: + type: "boolean" stdinOnce: - type: boolean - ports: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: - containerPort: - type: integer - hostPort: - type: integer + devicePath: + type: "string" name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array + type: "string" + type: "object" + type: "array" volumeMounts: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string mountPath: - type: string + type: "string" mountPropagation: - type: string - subPath: - type: string + type: "string" name: - type: string - type: object - type: array - securityContext: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + preference: properties: - add: + matchExpressions: items: - type: string - type: array - drop: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: items: properties: - devicePath: - type: string name: - type: string - type: object - type: array - type: object - type: array - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" name: - type: string - type: object - type: array - type: object - type: array + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" tolerations: - description: Pod tolerations. + description: "Pod tolerations." items: properties: + effect: + type: "string" key: - type: string + type: "string" operator: - type: string + type: "string" tolerationSeconds: - type: integer + type: "integer" value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object + type: "string" + type: "object" + type: "array" + type: "object" + global: + properties: antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. + description: "Pod anti affinity configuration." properties: host: - description: Indicates the reclaimPolicy property for the - StorageClass. + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" zone: - description: Indicates the provisioner property for the StorageClass. + description: "Indicates the provisioner property for the StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + auth: + description: | + Authentication and authorization configuration. properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - global: - properties: + enabled: + description: "Enable authentication in the cluster. Default\ + \ is 'false'." + type: "boolean" + token: + description: "Token based authentication configuration." + properties: + initialize: + description: "Initialize Secrets with new pair of keys\ + \ and tokens for the super user roles. The generated\ + \ Secret name is 'token-'." + type: "boolean" + privateKeyFile: + description: "Private key file name stored in the Secret.\ + \ Default is 'my-private.key'" + type: "string" + proxyRoles: + description: "Proxy roles." + items: + type: "string" + type: "array" + publicKeyFile: + description: "Public key file name stored in the Secret.\ + \ Default is 'my-public.key'" + type: "string" + superUserRoles: + description: "Super user roles." + items: + type: "string" + type: "array" + type: "object" + type: "object" + clusterName: + description: "Corresponds to the 'clusterName' field in the broker.conf.\ + \ Defaults to the value of the 'name' field" + type: "string" components: - description: Pulsar cluster components names. + description: "Pulsar cluster components names." properties: - brokerBaseName: - description: Broker base name. Default value is 'broker'. - type: string - zookeeperBaseName: - description: Zookeeper base name. Default value is 'zookeeper'. - type: string - functionsWorkerBaseName: - description: Functions Worker base name. Default value is - 'function'. - type: string autorecoveryBaseName: - description: Autorecovery base name. Default value is 'autorecovery'. - type: string - bookkeeperBaseName: - description: BookKeeper base name. Default value is 'bookkeeper'. - type: string + description: "Autorecovery base name. Default value is 'autorecovery'." + type: "string" bastionBaseName: - description: Bastion base name. Default value is 'bastion'. - type: string + description: "Bastion base name. Default value is 'bastion'." + type: "string" + bookkeeperBaseName: + description: "BookKeeper base name. Default value is 'bookkeeper'." + type: "string" + brokerBaseName: + description: "Broker base name. Default value is 'broker'." + type: "string" + functionsWorkerBaseName: + description: "Functions Worker base name. Default value is\ + \ 'function'." + type: "string" proxyBaseName: - description: Proxy base name. Default value is 'proxy'. - type: string - type: object + description: "Proxy base name. Default value is 'proxy'." + type: "string" + zookeeperBaseName: + description: "Zookeeper base name. Default value is 'zookeeper'." + type: "string" + type: "object" dnsConfig: description: | Override default DNS config for each pod. Note that because we use fully qualified service names for intra @@ -1310,703 +1460,636 @@ spec: properties: nameservers: items: - type: string - type: array - searches: - items: - type: string - type: array + type: "string" + type: "array" options: items: properties: - value: - type: string name: - type: string - type: object - type: array - type: object + type: "string" + value: + type: "string" + type: "object" + type: "array" + searches: + items: + type: "string" + type: "array" + type: "object" dnsName: - description: Public dns name for the cluster's load balancer. - type: string + description: "Public dns name for the cluster's load balancer." + type: "string" + image: + description: "Default Pulsar image to use. Any components can\ + \ be configured to use a different image." + type: "string" + imagePullPolicy: + description: "Default Pulsar image pull policy to use. Any components\ + \ can be configured to use a different image pull policy. Default\ + \ value is 'IfNotPresent'." + type: "string" kubernetesClusterDomain: description: | The domain name for your kubernetes cluster. This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . It's used to fully qualify service names when configuring Pulsar. The default value is 'cluster.local'. - type: string - priorityClassName: - description: Priority class name to attach to each pod. - type: string + type: "string" name: - description: Name of the Pulsar cluster spec. This is used as - a prefix for managed Kubernetes resources. - type: string + description: "Name of the Pulsar cluster spec. This is used as\ + \ a prefix for managed Kubernetes resources." + type: "string" + nodeSelectors: + additionalProperties: + type: "string" + description: "Global node selector. If set, this will apply to\ + \ all the components." + type: "object" + persistence: + description: | + If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir + type: "boolean" + priorityClassName: + description: "Priority class name to attach to each pod." + type: "string" + racks: + additionalProperties: + properties: + host: + description: "Enable rack rules based on the hostname of\ + \ the node." + properties: + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + zone: + description: "Enable rack rules based on the failure domain\ + \ (availability zone) of the node." + properties: + enableHostAntiAffinity: + description: "Enable the host anti affinity. If set,\ + \ all the pods of the same rack will deployed on different\ + \ nodes of the same zone.Default is true." + type: "boolean" + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackHostAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced for the host. Default is true.\ + \ If required, the affinity rule will be enforced\ + \ using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + type: "object" + description: "Racks configuration." + type: "object" + resourceSets: + additionalProperties: + properties: + rack: + description: "Place this resource set to a specific rack,\ + \ defined at .global.racks." + type: "string" + type: "object" + description: "Resource sets." + type: "object" + restartOnConfigMapChange: + description: | + By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. + type: "boolean" storage: - description: Storage configuration. + description: "Storage configuration." properties: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." properties: extraParams: additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" tls: - description: TLS configuration for the cluster. + description: "TLS configuration for the cluster." properties: - ssCa: - description: "TLS configurations used by additional components,\ - \ such as the Bastion component." + autorecovery: + description: "TLS configurations related to the Autorecovery\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + bookkeeper: + description: "TLS configurations related to the BookKeeper\ + \ component." properties: + enabled: + description: "Enable TLS." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + broker: + description: "TLS configurations related to the Broker component." + properties: enabled: - description: Enable TLS. - type: boolean - type: object + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + brokerResourceSets: + additionalProperties: + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Broker resource\ + \ sets." + type: "object" + caPath: + description: "Path in the container filesystem where the TLS\ + \ CA certificates are retrieved. It has to point to a certificate\ + \ file. The default value is /etc/ssl/certs/ca-certificates.crt." + type: "string" certProvisioner: - description: Certificate provisioner configuration. + description: "Certificate provisioner configuration." properties: selfSigned: - description: Self signed certificate provisioner configuration. + description: "Self signed certificate provisioner configuration." properties: - functionsWorker: - description: Functions worker self signed certificate - config. + autorecovery: + description: "Autorecovery self signed certificate\ + \ config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - includeDns: - description: Include dns name in the DNS names covered - by the certificate. - type: boolean - privateKey: - description: Cert-manager options for generating the - private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - autorecovery: - description: Autorecovery self signed certificate - config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + bookkeeper: + description: "Bookkeeper self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - bookkeeper: - description: Bookkeeper self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + broker: + description: "Broker self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - proxy: - description: Proxy self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + caSecretName: + description: "Secret where to store the root CA certificate." + type: "string" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension along\ + \ with the default K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + functionsWorker: + description: "Functions worker self signed certificate\ + \ config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - zookeeper: - description: Zookeeper self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + includeDns: + description: "Include dns name in the DNS names covered\ + \ by the certificate." + type: "boolean" + perComponent: + description: "Generate a different certificate for\ + \ each component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - broker: - description: Broker self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + zookeeper: + description: "Zookeeper self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - perComponent: - description: Generate a different certificate for - each component. - type: boolean - enabled: - description: "Generate self signed certificates for\ - \ broker, proxy and functions worker." - type: boolean - caSecretName: - description: Secret where to store the root CA certificate. - type: string - external: - additionalProperties: - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if - not specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - description: "External services self signed certificate\ - \ config (e.g., admin console, grafana). The key\ - \ is the service name, and the value contains generation\ - \ config" - type: object - type: object - type: object - autorecovery: - description: TLS configurations related to the Autorecovery - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxyResourceSets: - additionalProperties: - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Proxy resource - sets. - type: object + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" + type: "object" defaultSecretName: - description: Secret name used by each component to load TLS - certificates. Each component can load a different secret - by setting the 'secretName' entry in the tls component spec. - type: string + description: "Secret name used by each component to load TLS\ + \ certificates. Each component can load a different secret\ + \ by setting the 'secretName' entry in the tls component\ + \ spec." + type: "string" enabled: - description: Deprecated. Use the 'enabled' field in each component - spec instead. - type: boolean - caPath: - description: Path in the container filesystem where the TLS - CA certificates are retrieved. It has to point to a certificate - file. The default value is /etc/ssl/certs/ca-certificates.crt. - type: string - zookeeper: - description: TLS configurations related to the ZooKeeper component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - brokerResourceSets: - additionalProperties: - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Broker resource - sets. - type: object + description: "Deprecated. Use the 'enabled' field in each\ + \ component spec instead." + type: "boolean" functionsWorker: - description: TLS configurations related to the Functions worker - component. + description: "TLS configurations related to the Functions\ + \ worker component." properties: - enabledWithBroker: - description: Enable TLS for the functions worker to broker - connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string enabled: - description: Enable TLS. - type: boolean - type: object - broker: - description: TLS configurations related to the Broker component. - properties: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the functions worker to broker\ + \ connections." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" proxy: - description: TLS configurations related to the Proxy component. + description: "TLS configurations related to the Proxy component." properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string enabled: - description: Enable TLS. - type: boolean - type: object - bookkeeper: - description: TLS configurations related to the BookKeeper - component. - properties: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - type: object - clusterName: - description: Corresponds to the 'clusterName' field in the broker.conf. Defaults - to the value of the 'name' field - type: string - restartOnConfigMapChange: - description: | - By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. - type: boolean - image: - description: Default Pulsar image to use. Any components can be - configured to use a different image. - type: string - auth: - description: | - Authentication and authorization configuration. - properties: - token: - description: Token based authentication configuration. - properties: - privateKeyFile: - description: Private key file name stored in the Secret. - Default is 'my-private.key' - type: string - initialize: - description: Initialize Secrets with new pair of keys - and tokens for the super user roles. The generated Secret - name is 'token-'. - type: boolean - superUserRoles: - description: Super user roles. - items: - type: string - type: array - proxyRoles: - description: Proxy roles. - items: - type: string - type: array - publicKeyFile: - description: Public key file name stored in the Secret. - Default is 'my-public.key' - type: string - type: object - enabled: - description: Enable authentication in the cluster. Default - is 'false'. - type: boolean - type: object - persistence: - description: | - If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir - type: boolean - racks: - additionalProperties: - properties: - host: - description: Enable rack rules based on the hostname of - the node. - properties: - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - zone: - description: Enable rack rules based on the failure domain - (availability zone) of the node. + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxyResourceSets: + additionalProperties: properties: - enableHostAntiAffinity: - description: "Enable the host anti affinity. If set,\ - \ all the pods of the same rack will deployed on different\ - \ nodes of the same zone.Default is true." - type: boolean - requireRackHostAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced for the host. Default is true.\ - \ If required, the affinity rule will be enforced\ - \ using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - type: object - description: Racks configuration. - type: object - resourceSets: - additionalProperties: - properties: - rack: - description: "Place this resource set to a specific rack,\ - \ defined at .global.racks." - type: string - type: object - description: Resource sets. - type: object - nodeSelectors: - additionalProperties: - type: string - description: "Global node selector. If set, this will apply to\ - \ all the components." - type: object - antiAffinity: - description: Pod anti affinity configuration. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Proxy resource\ + \ sets." + type: "object" + ssCa: + description: "TLS configurations used by additional components,\ + \ such as the Bastion component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + zookeeper: + description: "TLS configurations related to the ZooKeeper\ + \ component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + type: "object" zookeeperPlainSslStorePassword: description: "Use plain password in zookeeper server and client\ \ configuration. Default is false. Old versions of Apache Zookeeper\ \ (<3.8.0) does not support getting password from file. In that\ \ case, set this to true." - type: boolean - imagePullPolicy: - description: Default Pulsar image pull policy to use. Any components - can be configured to use a different image pull policy. Default - value is 'IfNotPresent'. - type: string + type: "boolean" required: - - name - type: object - type: object + - "name" + type: "object" + type: "object" status: properties: - lastApplied: - description: Last spec applied. - type: string conditions: description: |- Conditions: 1. Condition Ready: possible status are True or False. If False, the reason contains the error message. items: properties: - status: - type: string - reason: - type: string lastTransitionTime: - type: string + type: "string" + message: + type: "string" observedGeneration: - type: integer + type: "integer" + reason: + type: "string" + status: + type: "string" type: - type: string - message: - type: string - type: object - type: array - type: object - type: object + type: "string" + type: "object" + type: "array" + lastApplied: + description: "Last spec applied." + type: "string" + type: "object" + type: "object" served: true storage: true subresources: diff --git a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml index ba67d1fa..8d8e3fa4 100644 --- a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml @@ -1,20 +1,20 @@ # Generated by Fabric8 CRDGenerator, manual edits might get overwritten! -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" metadata: - name: bastions.kaap.oss.datastax.com + name: "bastions.kaap.oss.datastax.com" spec: - group: kaap.oss.datastax.com + group: "kaap.oss.datastax.com" names: - kind: Bastion - plural: bastions + kind: "Bastion" + plural: "bastions" shortNames: - - ba - - bs - singular: bastion - scope: Namespaced + - "ba" + - "bs" + singular: "bastion" + scope: "Namespaced" versions: - - name: v1beta1 + - name: "v1beta1" schema: openAPIV3Schema: properties: @@ -22,1287 +22,1437 @@ spec: properties: bastion: properties: + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" config: - description: Configuration. + description: "Configuration." x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" gracePeriod: - description: Termination grace period in seconds. + description: "Termination grace period in seconds." minimum: 0.0 - type: integer + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" imagePullSecrets: - description: Image pull secrets. + description: "Image pull secrets." items: properties: name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object + type: "integer" + type: "object" + stdin: + type: "boolean" stdinOnce: - type: boolean - ports: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: - containerPort: - type: integer - hostPort: - type: integer + devicePath: + type: "string" name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array + type: "string" + type: "object" + type: "array" volumeMounts: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string mountPath: - type: string + type: "string" mountPropagation: - type: string - subPath: - type: string + type: "string" name: - type: string - type: object - type: array - securityContext: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + preference: properties: - add: + matchExpressions: items: - type: string - type: array - drop: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: items: properties: - devicePath: - type: string name: - type: string - type: object - type: array - type: object - type: array - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" name: - type: string - type: object - type: array - type: object - type: array + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + targetProxy: + description: "Indicates to connect to proxy or the broker. The\ + \ default value depends whether Proxy is deployed or not." + type: "boolean" tolerations: - description: Pod tolerations. + description: "Pod tolerations." items: properties: + effect: + type: "string" key: - type: string + type: "string" operator: - type: string + type: "string" tolerationSeconds: - type: integer + type: "integer" value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - targetProxy: - description: Indicates to connect to proxy or the broker. The - default value depends whether Proxy is deployed or not. - type: boolean + type: "string" + type: "object" + type: "array" + type: "object" + global: + properties: antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. + description: "Pod anti affinity configuration." properties: host: - description: Indicates the reclaimPolicy property for the - StorageClass. + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" zone: - description: Indicates the provisioner property for the StorageClass. + description: "Indicates the provisioner property for the StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + auth: + description: | + Authentication and authorization configuration. properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - global: - properties: + enabled: + description: "Enable authentication in the cluster. Default\ + \ is 'false'." + type: "boolean" + token: + description: "Token based authentication configuration." + properties: + initialize: + description: "Initialize Secrets with new pair of keys\ + \ and tokens for the super user roles. The generated\ + \ Secret name is 'token-'." + type: "boolean" + privateKeyFile: + description: "Private key file name stored in the Secret.\ + \ Default is 'my-private.key'" + type: "string" + proxyRoles: + description: "Proxy roles." + items: + type: "string" + type: "array" + publicKeyFile: + description: "Public key file name stored in the Secret.\ + \ Default is 'my-public.key'" + type: "string" + superUserRoles: + description: "Super user roles." + items: + type: "string" + type: "array" + type: "object" + type: "object" + clusterName: + description: "Corresponds to the 'clusterName' field in the broker.conf.\ + \ Defaults to the value of the 'name' field" + type: "string" components: - description: Pulsar cluster components names. + description: "Pulsar cluster components names." properties: - brokerBaseName: - description: Broker base name. Default value is 'broker'. - type: string - zookeeperBaseName: - description: Zookeeper base name. Default value is 'zookeeper'. - type: string - functionsWorkerBaseName: - description: Functions Worker base name. Default value is - 'function'. - type: string autorecoveryBaseName: - description: Autorecovery base name. Default value is 'autorecovery'. - type: string - bookkeeperBaseName: - description: BookKeeper base name. Default value is 'bookkeeper'. - type: string + description: "Autorecovery base name. Default value is 'autorecovery'." + type: "string" bastionBaseName: - description: Bastion base name. Default value is 'bastion'. - type: string + description: "Bastion base name. Default value is 'bastion'." + type: "string" + bookkeeperBaseName: + description: "BookKeeper base name. Default value is 'bookkeeper'." + type: "string" + brokerBaseName: + description: "Broker base name. Default value is 'broker'." + type: "string" + functionsWorkerBaseName: + description: "Functions Worker base name. Default value is\ + \ 'function'." + type: "string" proxyBaseName: - description: Proxy base name. Default value is 'proxy'. - type: string - type: object + description: "Proxy base name. Default value is 'proxy'." + type: "string" + zookeeperBaseName: + description: "Zookeeper base name. Default value is 'zookeeper'." + type: "string" + type: "object" dnsConfig: description: | Override default DNS config for each pod. Note that because we use fully qualified service names for intra @@ -1314,703 +1464,636 @@ spec: properties: nameservers: items: - type: string - type: array - searches: - items: - type: string - type: array + type: "string" + type: "array" options: items: properties: - value: - type: string name: - type: string - type: object - type: array - type: object + type: "string" + value: + type: "string" + type: "object" + type: "array" + searches: + items: + type: "string" + type: "array" + type: "object" dnsName: - description: Public dns name for the cluster's load balancer. - type: string + description: "Public dns name for the cluster's load balancer." + type: "string" + image: + description: "Default Pulsar image to use. Any components can\ + \ be configured to use a different image." + type: "string" + imagePullPolicy: + description: "Default Pulsar image pull policy to use. Any components\ + \ can be configured to use a different image pull policy. Default\ + \ value is 'IfNotPresent'." + type: "string" kubernetesClusterDomain: description: | The domain name for your kubernetes cluster. This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . It's used to fully qualify service names when configuring Pulsar. The default value is 'cluster.local'. - type: string - priorityClassName: - description: Priority class name to attach to each pod. - type: string + type: "string" name: - description: Name of the Pulsar cluster spec. This is used as - a prefix for managed Kubernetes resources. - type: string + description: "Name of the Pulsar cluster spec. This is used as\ + \ a prefix for managed Kubernetes resources." + type: "string" + nodeSelectors: + additionalProperties: + type: "string" + description: "Global node selector. If set, this will apply to\ + \ all the components." + type: "object" + persistence: + description: | + If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir + type: "boolean" + priorityClassName: + description: "Priority class name to attach to each pod." + type: "string" + racks: + additionalProperties: + properties: + host: + description: "Enable rack rules based on the hostname of\ + \ the node." + properties: + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + zone: + description: "Enable rack rules based on the failure domain\ + \ (availability zone) of the node." + properties: + enableHostAntiAffinity: + description: "Enable the host anti affinity. If set,\ + \ all the pods of the same rack will deployed on different\ + \ nodes of the same zone.Default is true." + type: "boolean" + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackHostAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced for the host. Default is true.\ + \ If required, the affinity rule will be enforced\ + \ using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + type: "object" + description: "Racks configuration." + type: "object" + resourceSets: + additionalProperties: + properties: + rack: + description: "Place this resource set to a specific rack,\ + \ defined at .global.racks." + type: "string" + type: "object" + description: "Resource sets." + type: "object" + restartOnConfigMapChange: + description: | + By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. + type: "boolean" storage: - description: Storage configuration. + description: "Storage configuration." properties: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." properties: extraParams: additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" tls: - description: TLS configuration for the cluster. + description: "TLS configuration for the cluster." properties: - ssCa: - description: "TLS configurations used by additional components,\ - \ such as the Bastion component." + autorecovery: + description: "TLS configurations related to the Autorecovery\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + bookkeeper: + description: "TLS configurations related to the BookKeeper\ + \ component." properties: + enabled: + description: "Enable TLS." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + broker: + description: "TLS configurations related to the Broker component." + properties: enabled: - description: Enable TLS. - type: boolean - type: object + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + brokerResourceSets: + additionalProperties: + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Broker resource\ + \ sets." + type: "object" + caPath: + description: "Path in the container filesystem where the TLS\ + \ CA certificates are retrieved. It has to point to a certificate\ + \ file. The default value is /etc/ssl/certs/ca-certificates.crt." + type: "string" certProvisioner: - description: Certificate provisioner configuration. + description: "Certificate provisioner configuration." properties: selfSigned: - description: Self signed certificate provisioner configuration. + description: "Self signed certificate provisioner configuration." properties: - functionsWorker: - description: Functions worker self signed certificate - config. + autorecovery: + description: "Autorecovery self signed certificate\ + \ config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - includeDns: - description: Include dns name in the DNS names covered - by the certificate. - type: boolean - privateKey: - description: Cert-manager options for generating the - private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - autorecovery: - description: Autorecovery self signed certificate - config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + bookkeeper: + description: "Bookkeeper self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - bookkeeper: - description: Bookkeeper self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + broker: + description: "Broker self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - proxy: - description: Proxy self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + caSecretName: + description: "Secret where to store the root CA certificate." + type: "string" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension along\ + \ with the default K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + functionsWorker: + description: "Functions worker self signed certificate\ + \ config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - zookeeper: - description: Zookeeper self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + includeDns: + description: "Include dns name in the DNS names covered\ + \ by the certificate." + type: "boolean" + perComponent: + description: "Generate a different certificate for\ + \ each component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - broker: - description: Broker self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + zookeeper: + description: "Zookeeper self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - perComponent: - description: Generate a different certificate for - each component. - type: boolean - enabled: - description: "Generate self signed certificates for\ - \ broker, proxy and functions worker." - type: boolean - caSecretName: - description: Secret where to store the root CA certificate. - type: string - external: - additionalProperties: - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if - not specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - description: "External services self signed certificate\ - \ config (e.g., admin console, grafana). The key\ - \ is the service name, and the value contains generation\ - \ config" - type: object - type: object - type: object - autorecovery: - description: TLS configurations related to the Autorecovery - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxyResourceSets: - additionalProperties: - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Proxy resource - sets. - type: object + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" + type: "object" defaultSecretName: - description: Secret name used by each component to load TLS - certificates. Each component can load a different secret - by setting the 'secretName' entry in the tls component spec. - type: string + description: "Secret name used by each component to load TLS\ + \ certificates. Each component can load a different secret\ + \ by setting the 'secretName' entry in the tls component\ + \ spec." + type: "string" enabled: - description: Deprecated. Use the 'enabled' field in each component - spec instead. - type: boolean - caPath: - description: Path in the container filesystem where the TLS - CA certificates are retrieved. It has to point to a certificate - file. The default value is /etc/ssl/certs/ca-certificates.crt. - type: string - zookeeper: - description: TLS configurations related to the ZooKeeper component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - brokerResourceSets: - additionalProperties: - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Broker resource - sets. - type: object + description: "Deprecated. Use the 'enabled' field in each\ + \ component spec instead." + type: "boolean" functionsWorker: - description: TLS configurations related to the Functions worker - component. + description: "TLS configurations related to the Functions\ + \ worker component." properties: - enabledWithBroker: - description: Enable TLS for the functions worker to broker - connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string enabled: - description: Enable TLS. - type: boolean - type: object - broker: - description: TLS configurations related to the Broker component. - properties: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the functions worker to broker\ + \ connections." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" proxy: - description: TLS configurations related to the Proxy component. + description: "TLS configurations related to the Proxy component." properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string enabled: - description: Enable TLS. - type: boolean - type: object - bookkeeper: - description: TLS configurations related to the BookKeeper - component. - properties: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - type: object - clusterName: - description: Corresponds to the 'clusterName' field in the broker.conf. Defaults - to the value of the 'name' field - type: string - restartOnConfigMapChange: - description: | - By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. - type: boolean - image: - description: Default Pulsar image to use. Any components can be - configured to use a different image. - type: string - auth: - description: | - Authentication and authorization configuration. - properties: - token: - description: Token based authentication configuration. - properties: - privateKeyFile: - description: Private key file name stored in the Secret. - Default is 'my-private.key' - type: string - initialize: - description: Initialize Secrets with new pair of keys - and tokens for the super user roles. The generated Secret - name is 'token-'. - type: boolean - superUserRoles: - description: Super user roles. - items: - type: string - type: array - proxyRoles: - description: Proxy roles. - items: - type: string - type: array - publicKeyFile: - description: Public key file name stored in the Secret. - Default is 'my-public.key' - type: string - type: object - enabled: - description: Enable authentication in the cluster. Default - is 'false'. - type: boolean - type: object - persistence: - description: | - If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir - type: boolean - racks: - additionalProperties: - properties: - host: - description: Enable rack rules based on the hostname of - the node. - properties: - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - zone: - description: Enable rack rules based on the failure domain - (availability zone) of the node. + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxyResourceSets: + additionalProperties: properties: - enableHostAntiAffinity: - description: "Enable the host anti affinity. If set,\ - \ all the pods of the same rack will deployed on different\ - \ nodes of the same zone.Default is true." - type: boolean - requireRackHostAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced for the host. Default is true.\ - \ If required, the affinity rule will be enforced\ - \ using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - type: object - description: Racks configuration. - type: object - resourceSets: - additionalProperties: - properties: - rack: - description: "Place this resource set to a specific rack,\ - \ defined at .global.racks." - type: string - type: object - description: Resource sets. - type: object - nodeSelectors: - additionalProperties: - type: string - description: "Global node selector. If set, this will apply to\ - \ all the components." - type: object - antiAffinity: - description: Pod anti affinity configuration. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Proxy resource\ + \ sets." + type: "object" + ssCa: + description: "TLS configurations used by additional components,\ + \ such as the Bastion component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + zookeeper: + description: "TLS configurations related to the ZooKeeper\ + \ component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + type: "object" zookeeperPlainSslStorePassword: description: "Use plain password in zookeeper server and client\ \ configuration. Default is false. Old versions of Apache Zookeeper\ \ (<3.8.0) does not support getting password from file. In that\ \ case, set this to true." - type: boolean - imagePullPolicy: - description: Default Pulsar image pull policy to use. Any components - can be configured to use a different image pull policy. Default - value is 'IfNotPresent'. - type: string + type: "boolean" required: - - name - type: object - type: object + - "name" + type: "object" + type: "object" status: properties: - lastApplied: - description: Last spec applied. - type: string conditions: description: |- Conditions: 1. Condition Ready: possible status are True or False. If False, the reason contains the error message. items: properties: - status: - type: string - reason: - type: string lastTransitionTime: - type: string + type: "string" + message: + type: "string" observedGeneration: - type: integer + type: "integer" + reason: + type: "string" + status: + type: "string" type: - type: string - message: - type: string - type: object - type: array - type: object - type: object + type: "string" + type: "object" + type: "array" + lastApplied: + description: "Last spec applied." + type: "string" + type: "object" + type: "object" served: true storage: true subresources: diff --git a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml index d944274e..6d91fb03 100644 --- a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml @@ -1,5176 +1,5418 @@ # Generated by Fabric8 CRDGenerator, manual edits might get overwritten! -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" metadata: - name: bookkeepers.kaap.oss.datastax.com + name: "bookkeepers.kaap.oss.datastax.com" spec: - group: kaap.oss.datastax.com + group: "kaap.oss.datastax.com" names: - kind: BookKeeper - plural: bookkeepers + kind: "BookKeeper" + plural: "bookkeepers" shortNames: - - bk - singular: bookkeeper - scope: Namespaced + - "bk" + singular: "bookkeeper" + scope: "Namespaced" versions: - - name: v1beta1 + - name: "v1beta1" schema: openAPIV3Schema: properties: spec: properties: - global: + bookkeeper: properties: - components: - description: Pulsar cluster components names. - properties: - brokerBaseName: - description: Broker base name. Default value is 'broker'. - type: string - zookeeperBaseName: - description: Zookeeper base name. Default value is 'zookeeper'. - type: string - functionsWorkerBaseName: - description: Functions Worker base name. Default value is - 'function'. - type: string - autorecoveryBaseName: - description: Autorecovery base name. Default value is 'autorecovery'. - type: string - bookkeeperBaseName: - description: BookKeeper base name. Default value is 'bookkeeper'. - type: string - bastionBaseName: - description: Bastion base name. Default value is 'bastion'. - type: string - proxyBaseName: - description: Proxy base name. Default value is 'proxy'. - type: string - type: object - dnsConfig: - description: | - Override default DNS config for each pod. Note that because we use fully qualified service names for intra - cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents - unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. - For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly - instead of appending the configured search domains. - More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + additionalVolumes: + description: "Mount additional volumes to the pod." properties: - nameservers: - items: - type: string - type: array - searches: - items: - type: string - type: array - options: + mounts: + description: "Mount points for the additional volumes" items: properties: - value: - type: string + mountPath: + type: "string" + mountPropagation: + type: "string" name: - type: string - type: object - type: array - type: object - dnsName: - description: Public dns name for the cluster's load balancer. - type: string - kubernetesClusterDomain: - description: | - The domain name for your kubernetes cluster. - This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . - It's used to fully qualify service names when configuring Pulsar. - The default value is 'cluster.local'. - type: string - priorityClassName: - description: Priority class name to attach to each pod. - type: string - name: - description: Name of the Pulsar cluster spec. This is used as - a prefix for managed Kubernetes resources. - type: string - storage: - description: Storage configuration. - properties: - storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - tls: - description: TLS configuration for the cluster. - properties: - ssCa: - description: "TLS configurations used by additional components,\ - \ such as the Bastion component." - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - certProvisioner: - description: Certificate provisioner configuration. - properties: - selfSigned: - description: Self signed certificate provisioner configuration. - properties: - functionsWorker: - description: Functions worker self signed certificate - config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - includeDns: - description: Include dns name in the DNS names covered - by the certificate. - type: boolean - privateKey: - description: Cert-manager options for generating the - private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - autorecovery: - description: Autorecovery self signed certificate - config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - bookkeeper: - description: Bookkeeper self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - proxy: - description: Proxy self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - zookeeper: - description: Zookeeper self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - broker: - description: Broker self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" + items: + items: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - perComponent: - description: Generate a different certificate for - each component. - type: boolean - enabled: - description: "Generate self signed certificates for\ - \ broker, proxy and functions worker." - type: boolean - caSecretName: - description: Secret where to store the root CA certificate. - type: string - external: - additionalProperties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + metadata: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if - not specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - description: "External services self signed certificate\ - \ config (e.g., admin console, grafana). The key\ - \ is the service name, and the value contains generation\ - \ config" - type: object - type: object - type: object - autorecovery: - description: TLS configurations related to the Autorecovery - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxyResourceSets: - additionalProperties: - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Proxy resource - sets. - type: object - defaultSecretName: - description: Secret name used by each component to load TLS - certificates. Each component can load a different secret - by setting the 'secretName' entry in the tls component spec. - type: string - enabled: - description: Deprecated. Use the 'enabled' field in each component - spec instead. - type: boolean - caPath: - description: Path in the container filesystem where the TLS - CA certificates are retrieved. It has to point to a certificate - file. The default value is /etc/ssl/certs/ca-certificates.crt. - type: string - zookeeper: - description: TLS configurations related to the ZooKeeper component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - brokerResourceSets: - additionalProperties: - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Broker resource - sets. - type: object - functionsWorker: - description: TLS configurations related to the Functions worker - component. - properties: - enabledWithBroker: - description: Enable TLS for the functions worker to broker - connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - broker: - description: TLS configurations related to the Broker component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxy: - description: TLS configurations related to the Proxy component. - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - bookkeeper: - description: TLS configurations related to the BookKeeper - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - type: object - clusterName: - description: Corresponds to the 'clusterName' field in the broker.conf. Defaults - to the value of the 'name' field - type: string - restartOnConfigMapChange: - description: | - By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. - type: boolean - image: - description: Default Pulsar image to use. Any components can be - configured to use a different image. - type: string - auth: - description: | - Authentication and authorization configuration. - properties: - token: - description: Token based authentication configuration. - properties: - privateKeyFile: - description: Private key file name stored in the Secret. - Default is 'my-private.key' - type: string - initialize: - description: Initialize Secrets with new pair of keys - and tokens for the super user roles. The generated Secret - name is 'token-'. - type: boolean - superUserRoles: - description: Super user roles. - items: - type: string - type: array - proxyRoles: - description: Proxy roles. - items: - type: string - type: array - publicKeyFile: - description: Public key file name stored in the Secret. - Default is 'my-public.key' - type: string - type: object - enabled: - description: Enable authentication in the cluster. Default - is 'false'. - type: boolean - type: object - persistence: - description: | - If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir - type: boolean - racks: - additionalProperties: - properties: - host: - description: Enable rack rules based on the hostname of - the node. - properties: - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - zone: - description: Enable rack rules based on the failure domain - (availability zone) of the node. - properties: - enableHostAntiAffinity: - description: "Enable the host anti affinity. If set,\ - \ all the pods of the same rack will deployed on different\ - \ nodes of the same zone.Default is true." - type: boolean - requireRackHostAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced for the host. Default is true.\ - \ If required, the affinity rule will be enforced\ - \ using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - type: object - description: Racks configuration. - type: object - resourceSets: - additionalProperties: - properties: - rack: - description: "Place this resource set to a specific rack,\ - \ defined at .global.racks." - type: string - type: object - description: Resource sets. - type: object - nodeSelectors: - additionalProperties: - type: string - description: "Global node selector. If set, this will apply to\ - \ all the components." - type: object - antiAffinity: - description: Pod anti affinity configuration. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - zookeeperPlainSslStorePassword: - description: "Use plain password in zookeeper server and client\ - \ configuration. Default is false. Old versions of Apache Zookeeper\ - \ (<3.8.0) does not support getting password from file. In that\ - \ case, set this to true." - type: boolean - imagePullPolicy: - description: Default Pulsar image pull policy to use. Any components - can be configured to use a different image pull policy. Default - value is 'IfNotPresent'. - type: string - required: - - name - type: object - bookkeeper: - properties: - autoRackConfig: - description: Configuration for the rack auto configuration. - properties: - periodMs: - description: Period for the schedule of the monitoring thread. - minimum: 1000.0 - type: integer - additionalZookeeperClientConfig: - description: Additional configuration for the zookeeper client. - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Enable rack configuration monitoring. - type: boolean - type: object - sets: - additionalProperties: - properties: - cleanUpPvcs: - description: Cleanup PVCs after the bookie has been removed. - type: boolean - updateStrategy: - description: Update strategy for the StatefulSet. Default - value is rolling update. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - service: - description: Service configuration. - properties: - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: object - podManagementPolicy: - description: Pod management policy. Default value is 'Parallel'. - type: string - autoscaler: - description: Autoscaling config. - properties: - periodMs: - description: The interval in milliseconds between two - consecutive autoscaling checks. - minimum: 1000.0 - type: integer - diskUsageToleranceLwm: - description: The threshold to trigger a scale down. - The autoscaler will scale down if all the bookies' - disk usage is lower than this threshold. Default is - '0.75' - maximum: 1.0 - minimum: 0.0 - type: number - scaleUpMaxLimit: - description: "Max number of bookies. If the number of\ - \ bookies is equals to this value, the autoscaler\ - \ will never scale up." - minimum: 1.0 - type: integer - diskUsageToleranceHwm: - description: The threshold to trigger a scale up. The - autoscaler will scale up if any of thebookie's disk - usage is higher than or equal to this threshold. Default - is '0.92' - maximum: 1.0 - minimum: 0.0 - type: number - enabled: - description: Enable autoscaling for bookies. - type: boolean - minWritableBookies: - description: "Min number of writable bookies. The autoscaler\ - \ will scale up if not enough writable bookies are\ - \ detected. For instance, if a bookie went to read-only\ - \ mode, the autoscaler will scale up to replace it.\ - \ Default is '3'." - minimum: 1.0 - type: integer - scaleUpBy: - description: The number of bookies to add at each scale - up. Default is '1' - minimum: 1.0 - type: integer - stabilizationWindowMs: - description: The stabilization window is used to restrict - the flapping of replica count when the metrics used - for scaling keep fluctuating. The autoscaling algorithm - uses this window to infer a previous desired state - and avoid unwanted changes to workload scale.Default - value is 5 minutes after the pod readiness. - minimum: 1.0 - type: integer - scaleDownBy: - description: The number of bookies to remove at each - scale down. Default is '1' - minimum: 1.0 - type: integer - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the - operator. - type: string - pvcPrefix: - description: Prefix for each PVC created. - type: string - volumes: - description: Volumes configuration. - properties: - journal: - description: Config for the journal volume. - properties: - storageClass: - description: Indicates if a StorageClass is used. - The operator will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property - for the StorageClass. - type: string - type: - description: Indicates the 'type' parameter - for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter - for the StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the - volume. The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. - Default value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage - class should be used. - type: string - type: object - ledgers: - description: Config for the ledgers volume. - properties: - storageClass: - description: Indicates if a StorageClass is used. - The operator will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property - for the StorageClass. - type: string - type: - description: Indicates the 'type' parameter - for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter - for the StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the - volume. The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. - Default value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage - class should be used. - type: string - type: object - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except - pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the - pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: - items: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: - items: - items: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: + properties: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: + properties: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: + properties: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: properties: - defaultMode: - type: integer - sources: - items: - properties: - secret: - properties: - optional: - type: boolean + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + autoRackConfig: + description: "Configuration for the rack auto configuration." + properties: + additionalZookeeperClientConfig: + description: "Additional configuration for the zookeeper client." + x-kubernetes-preserve-unknown-fields: true + enabled: + description: "Enable rack configuration monitoring." + type: "boolean" + periodMs: + description: "Period for the schedule of the monitoring thread." + minimum: 1000.0 + type: "integer" + type: "object" + autoscaler: + description: "Autoscaling config." + properties: + diskUsageToleranceHwm: + description: "The threshold to trigger a scale up. The autoscaler\ + \ will scale up if any of thebookie's disk usage is higher\ + \ than or equal to this threshold. Default is '0.92'" + maximum: 1.0 + minimum: 0.0 + type: "number" + diskUsageToleranceLwm: + description: "The threshold to trigger a scale down. The autoscaler\ + \ will scale down if all the bookies' disk usage is lower\ + \ than this threshold. Default is '0.75'" + maximum: 1.0 + minimum: 0.0 + type: "number" + enabled: + description: "Enable autoscaling for bookies." + type: "boolean" + minWritableBookies: + description: "Min number of writable bookies. The autoscaler\ + \ will scale up if not enough writable bookies are detected.\ + \ For instance, if a bookie went to read-only mode, the\ + \ autoscaler will scale up to replace it. Default is '3'." + minimum: 1.0 + type: "integer" + periodMs: + description: "The interval in milliseconds between two consecutive\ + \ autoscaling checks." + minimum: 1000.0 + type: "integer" + scaleDownBy: + description: "The number of bookies to remove at each scale\ + \ down. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpBy: + description: "The number of bookies to add at each scale up.\ + \ Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpMaxLimit: + description: "Max number of bookies. If the number of bookies\ + \ is equals to this value, the autoscaler will never scale\ + \ up." + minimum: 1.0 + type: "integer" + stabilizationWindowMs: + description: "The stabilization window is used to restrict\ + \ the flapping of replica count when the metrics used for\ + \ scaling keep fluctuating. The autoscaling algorithm uses\ + \ this window to infer a previous desired state and avoid\ + \ unwanted changes to workload scale.Default value is 5\ + \ minutes after the pod readiness." + minimum: 1.0 + type: "integer" + type: "object" + cleanUpPvcs: + description: "Cleanup PVCs after the bookie has been removed." + type: "boolean" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - path: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - sizeLimit: + containerName: + type: "string" + divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: properties: - optional: - type: boolean key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: properties: - optional: - type: boolean key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: - lifecycle: - properties: - postStart: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy. Default value is 'Parallel'." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + type: "object" + pvcPrefix: + description: "Prefix for each PVC created." + type: "string" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sets: + additionalProperties: + properties: + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the\ + \ pod" + items: + properties: + awsElasticBlockStore: properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: properties: - command: - items: - type: string - type: array - type: object - httpGet: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + monitors: items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: properties: - command: + defaultMode: + type: "integer" + items: items: - type: string - type: array - type: object - httpGet: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" + items: items: properties: - value: - type: string - name: - type: string - type: object - type: array - port: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + type: "object" + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: properties: - command: - items: - type: string - type: array - type: object - httpGet: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: properties: - add: - items: - type: string - type: array - drop: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: items: - type: string - type: array - type: object - seLinuxOptions: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: items: properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: properties: - matchFields: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: items: properties: key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: additionalProperties: - type: string - description: Additional node selectors. - type: object + type: "string" + description: "Annotations to add to each resource (except\ + \ pods)." + type: "object" antiAffinity: - description: Pod anti-affinity configuration. This override - the global value if set. + description: "Pod anti-affinity configuration. This override\ + \ the global value if set." properties: host: - description: Indicates the reclaimPolicy property for - the StorageClass. + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" zone: - description: Indicates the provisioner property for - the StorageClass. + description: "Indicates the provisioner property for\ + \ the StorageClass." properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID,\ - \ GID, and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - description: Bookie sets. - type: object - setsUpdateStrategy: - description: Sets update strategy. 'RollingUpdate' or 'Parallel'. - Default is 'RollingUpdate'. - type: string - cleanUpPvcs: - description: Cleanup PVCs after the bookie has been removed. - type: boolean - updateStrategy: - description: Update strategy for the StatefulSet. Default value - is rolling update. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - service: - description: Service configuration. - properties: - additionalPorts: - description: Additional ports to add to the Service. - items: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + type: "object" + autoscaler: + description: "Autoscaling config." properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: object - podManagementPolicy: - description: Pod management policy. Default value is 'Parallel'. - type: string - autoscaler: - description: Autoscaling config. - properties: - periodMs: - description: The interval in milliseconds between two consecutive - autoscaling checks. - minimum: 1000.0 - type: integer - diskUsageToleranceLwm: - description: The threshold to trigger a scale down. The autoscaler - will scale down if all the bookies' disk usage is lower - than this threshold. Default is '0.75' - maximum: 1.0 - minimum: 0.0 - type: number - scaleUpMaxLimit: - description: "Max number of bookies. If the number of bookies\ - \ is equals to this value, the autoscaler will never scale\ - \ up." - minimum: 1.0 - type: integer - diskUsageToleranceHwm: - description: The threshold to trigger a scale up. The autoscaler - will scale up if any of thebookie's disk usage is higher - than or equal to this threshold. Default is '0.92' - maximum: 1.0 - minimum: 0.0 - type: number - enabled: - description: Enable autoscaling for bookies. - type: boolean - minWritableBookies: - description: "Min number of writable bookies. The autoscaler\ - \ will scale up if not enough writable bookies are detected.\ - \ For instance, if a bookie went to read-only mode, the\ - \ autoscaler will scale up to replace it. Default is '3'." - minimum: 1.0 - type: integer - scaleUpBy: - description: The number of bookies to add at each scale up. - Default is '1' - minimum: 1.0 - type: integer - stabilizationWindowMs: - description: The stabilization window is used to restrict - the flapping of replica count when the metrics used for - scaling keep fluctuating. The autoscaling algorithm uses - this window to infer a previous desired state and avoid - unwanted changes to workload scale.Default value is 5 minutes - after the pod readiness. - minimum: 1.0 - type: integer - scaleDownBy: - description: The number of bookies to remove at each scale - down. Default is '1' - minimum: 1.0 - type: integer - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the operator. - type: string - pvcPrefix: - description: Prefix for each PVC created. - type: string - volumes: - description: Volumes configuration. - properties: - journal: - description: Config for the journal volume. - properties: - storageClass: - description: Indicates if a StorageClass is used. The - operator will create the StorageClass if needed. + diskUsageToleranceHwm: + description: "The threshold to trigger a scale up. The\ + \ autoscaler will scale up if any of thebookie's disk\ + \ usage is higher than or equal to this threshold.\ + \ Default is '0.92'" + maximum: 1.0 + minimum: 0.0 + type: "number" + diskUsageToleranceLwm: + description: "The threshold to trigger a scale down.\ + \ The autoscaler will scale down if all the bookies'\ + \ disk usage is lower than this threshold. Default\ + \ is '0.75'" + maximum: 1.0 + minimum: 0.0 + type: "number" + enabled: + description: "Enable autoscaling for bookies." + type: "boolean" + minWritableBookies: + description: "Min number of writable bookies. The autoscaler\ + \ will scale up if not enough writable bookies are\ + \ detected. For instance, if a bookie went to read-only\ + \ mode, the autoscaler will scale up to replace it.\ + \ Default is '3'." + minimum: 1.0 + type: "integer" + periodMs: + description: "The interval in milliseconds between two\ + \ consecutive autoscaling checks." + minimum: 1000.0 + type: "integer" + scaleDownBy: + description: "The number of bookies to remove at each\ + \ scale down. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpBy: + description: "The number of bookies to add at each scale\ + \ up. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpMaxLimit: + description: "Max number of bookies. If the number of\ + \ bookies is equals to this value, the autoscaler\ + \ will never scale up." + minimum: 1.0 + type: "integer" + stabilizationWindowMs: + description: "The stabilization window is used to restrict\ + \ the flapping of replica count when the metrics used\ + \ for scaling keep fluctuating. The autoscaling algorithm\ + \ uses this window to infer a previous desired state\ + \ and avoid unwanted changes to workload scale.Default\ + \ value is 5 minutes after the pod readiness." + minimum: 1.0 + type: "integer" + type: "object" + cleanUpPvcs: + description: "Cleanup PVCs after the bookie has been removed." + type: "boolean" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for - the StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the - StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for - the StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the volume. - The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. Default - value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage - class should be used. - type: string - type: object - ledgers: - description: Config for the ledgers volume. - properties: - storageClass: - description: Indicates if a StorageClass is used. The - operator will create the StorageClass if needed. + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for - the StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the - StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for - the StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the volume. - The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. Default - value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage - class should be used. - type: string - type: object - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: properties: - command: - items: - type: string - type: array - type: object - httpGet: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: properties: - host: - type: string - port: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + type: "object" + requests: + additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - configMapKeyRef: + exec: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - containerName: - type: string - divisor: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: properties: - add: - items: - type: string - type: array - drop: + nodeSelectorTerms: items: - type: string - type: array - type: object - seLinuxOptions: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the\ + \ operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy. Default value is 'Parallel'." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + type: "object" + pvcPrefix: + description: "Prefix for each PVC created." + type: "string" + replicas: + description: "Number of desired replicas." + type: "integer" resources: + description: "Resources requirements." properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: properties: name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: + type: "string" + value: + type: "string" + valueFrom: properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: + configMapKeyRef: properties: + key: + type: "string" name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: - items: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: - items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: properties: + devicePath: + type: "string" name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: + type: "string" + type: "object" + type: "array" + volumeMounts: items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: properties: + mountPath: + type: "string" + mountPropagation: + type: "string" name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Update strategy for the StatefulSet. Default\ + \ value is rolling update." properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + rollingUpdate: properties: - containerName: - type: string - divisor: + maxUnavailable: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + volumes: + description: "Volumes configuration." + properties: + journal: + description: "Config for the journal volume." properties: - optional: - type: boolean - key: - type: string + existingStorageClassName: + description: "Indicates if an already existing storage\ + \ class should be used." + type: "string" name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers + description: "Indicates the suffix for the volume.\ + \ Default value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the\ + \ volume. The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used.\ + \ The operator will create the StorageClass if\ + \ needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the\ + \ StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter\ + \ for the StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property\ + \ for the StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter\ + \ for the StorageClass." + type: "string" + type: "object" + type: "object" + ledgers: + description: "Config for the ledgers volume." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage\ + \ class should be used." + type: "string" + name: + description: "Indicates the suffix for the volume.\ + \ Default value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the\ + \ volume. The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used.\ + \ The operator will create the StorageClass if\ + \ needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the\ + \ StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter\ + \ for the StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property\ + \ for the StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter\ + \ for the StorageClass." + type: "string" + type: "object" + type: "object" + type: "object" + type: "object" + description: "Bookie sets." + type: "object" + setsUpdateStrategy: + description: "Sets update strategy. 'RollingUpdate' or 'Parallel'.\ + \ Default is 'RollingUpdate'." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: properties: - value: - type: string - valueFrom: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" startupProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" stdinOnce: - type: boolean - ports: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: - containerPort: - type: integer - hostPort: - type: integer + devicePath: + type: "string" name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array + type: "string" + type: "object" + type: "array" volumeMounts: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string mountPath: - type: string + type: "string" mountPropagation: - type: string - subPath: - type: string + type: "string" name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Update strategy for the StatefulSet. Default value\ + \ is rolling update." + properties: + rollingUpdate: + properties: + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + volumes: + description: "Volumes configuration." + properties: + journal: + description: "Config for the journal volume." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage\ + \ class should be used." + type: "string" + name: + description: "Indicates the suffix for the volume. Default\ + \ value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the volume.\ + \ The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The\ + \ operator will create the StorageClass if needed." properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for\ + \ the StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for\ + \ the StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the\ + \ StorageClass." + type: "string" + type: "object" + type: "object" + ledgers: + description: "Config for the ledgers volume." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage\ + \ class should be used." + type: "string" + name: + description: "Indicates the suffix for the volume. Default\ + \ value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the volume.\ + \ The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The\ + \ operator will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for\ + \ the StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for\ + \ the StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the\ + \ StorageClass." + type: "string" + type: "object" + type: "object" + type: "object" + type: "object" + global: + properties: + antiAffinity: + description: "Pod anti affinity configuration." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + auth: + description: | + Authentication and authorization configuration. properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: + description: "Enable authentication in the cluster. Default\ + \ is 'false'." + type: "boolean" + token: + description: "Token based authentication configuration." + properties: + initialize: + description: "Initialize Secrets with new pair of keys\ + \ and tokens for the super user roles. The generated\ + \ Secret name is 'token-'." + type: "boolean" + privateKeyFile: + description: "Private key file name stored in the Secret.\ + \ Default is 'my-private.key'" + type: "string" + proxyRoles: + description: "Proxy roles." + items: + type: "string" + type: "array" + publicKeyFile: + description: "Public key file name stored in the Secret.\ + \ Default is 'my-public.key'" + type: "string" + superUserRoles: + description: "Super user roles." + items: + type: "string" + type: "array" + type: "object" + type: "object" + clusterName: + description: "Corresponds to the 'clusterName' field in the broker.conf.\ + \ Defaults to the value of the 'name' field" + type: "string" + components: + description: "Pulsar cluster components names." + properties: + autorecoveryBaseName: + description: "Autorecovery base name. Default value is 'autorecovery'." + type: "string" + bastionBaseName: + description: "Bastion base name. Default value is 'bastion'." + type: "string" + bookkeeperBaseName: + description: "BookKeeper base name. Default value is 'bookkeeper'." + type: "string" + brokerBaseName: + description: "Broker base name. Default value is 'broker'." + type: "string" + functionsWorkerBaseName: + description: "Functions Worker base name. Default value is\ + \ 'function'." + type: "string" + proxyBaseName: + description: "Proxy base name. Default value is 'proxy'." + type: "string" + zookeeperBaseName: + description: "Zookeeper base name. Default value is 'zookeeper'." + type: "string" + type: "object" + dnsConfig: + description: | + Override default DNS config for each pod. Note that because we use fully qualified service names for intra + cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents + unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. + For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly + instead of appending the configured search domains. + More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + properties: + nameservers: + items: + type: "string" + type: "array" + options: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + searches: + items: + type: "string" + type: "array" + type: "object" + dnsName: + description: "Public dns name for the cluster's load balancer." + type: "string" + image: + description: "Default Pulsar image to use. Any components can\ + \ be configured to use a different image." + type: "string" + imagePullPolicy: + description: "Default Pulsar image pull policy to use. Any components\ + \ can be configured to use a different image pull policy. Default\ + \ value is 'IfNotPresent'." + type: "string" + kubernetesClusterDomain: + description: | + The domain name for your kubernetes cluster. + This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . + It's used to fully qualify service names when configuring Pulsar. + The default value is 'cluster.local'. + type: "string" + name: + description: "Name of the Pulsar cluster spec. This is used as\ + \ a prefix for managed Kubernetes resources." + type: "string" + nodeSelectors: + additionalProperties: + type: "string" + description: "Global node selector. If set, this will apply to\ + \ all the components." + type: "object" + persistence: + description: | + If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir + type: "boolean" + priorityClassName: + description: "Priority class name to attach to each pod." + type: "string" + racks: + additionalProperties: + properties: + host: + description: "Enable rack rules based on the hostname of\ + \ the node." + properties: + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + zone: + description: "Enable rack rules based on the failure domain\ + \ (availability zone) of the node." + properties: + enableHostAntiAffinity: + description: "Enable the host anti affinity. If set,\ + \ all the pods of the same rack will deployed on different\ + \ nodes of the same zone.Default is true." + type: "boolean" + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackHostAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced for the host. Default is true.\ + \ If required, the affinity rule will be enforced\ + \ using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + type: "object" + description: "Racks configuration." + type: "object" + resourceSets: + additionalProperties: properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. + rack: + description: "Place this resource set to a specific rack,\ + \ defined at .global.racks." + type: "string" + type: "object" + description: "Resource sets." + type: "object" + restartOnConfigMapChange: + description: | + By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. + type: "boolean" + storage: + description: "Storage configuration." properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" + tls: + description: "TLS configuration for the cluster." + properties: + autorecovery: + description: "TLS configurations related to the Autorecovery\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + bookkeeper: + description: "TLS configurations related to the BookKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + broker: + description: "TLS configurations related to the Broker component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + brokerResourceSets: + additionalProperties: properties: - weight: - type: integer - preference: - properties: - matchFields: - items: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Broker resource\ + \ sets." + type: "object" + caPath: + description: "Path in the container filesystem where the TLS\ + \ CA certificates are retrieved. It has to point to a certificate\ + \ file. The default value is /etc/ssl/certs/ca-certificates.crt." + type: "string" + certProvisioner: + description: "Certificate provisioner configuration." + properties: + selfSigned: + description: "Self signed certificate provisioner configuration." + properties: + autorecovery: + description: "Autorecovery self signed certificate\ + \ config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + bookkeeper: + description: "Bookkeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + caSecretName: + description: "Secret where to store the root CA certificate." + type: "string" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension along\ + \ with the default K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + functionsWorker: + description: "Functions worker self signed certificate\ + \ config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + includeDns: + description: "Include dns name in the DNS names covered\ + \ by the certificate." + type: "boolean" + perComponent: + description: "Generate a different certificate for\ + \ each component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + zookeeper: + description: "Zookeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" + type: "object" + defaultSecretName: + description: "Secret name used by each component to load TLS\ + \ certificates. Each component can load a different secret\ + \ by setting the 'secretName' entry in the tls component\ + \ spec." + type: "string" + enabled: + description: "Deprecated. Use the 'enabled' field in each\ + \ component spec instead." + type: "boolean" + functionsWorker: + description: "TLS configurations related to the Functions\ + \ worker component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the functions worker to broker\ + \ connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxy: + description: "TLS configurations related to the Proxy component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - type: object + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxyResourceSets: + additionalProperties: + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Proxy resource\ + \ sets." + type: "object" + ssCa: + description: "TLS configurations used by additional components,\ + \ such as the Bastion component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + zookeeper: + description: "TLS configurations related to the ZooKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + type: "object" + zookeeperPlainSslStorePassword: + description: "Use plain password in zookeeper server and client\ + \ configuration. Default is false. Old versions of Apache Zookeeper\ + \ (<3.8.0) does not support getting password from file. In that\ + \ case, set this to true." + type: "boolean" + required: + - "name" + type: "object" + type: "object" status: properties: - lastApplied: - description: Last spec applied. - type: string conditions: description: |- Conditions: 1. Condition Ready: possible status are True or False. If False, the reason contains the error message. items: properties: - status: - type: string - reason: - type: string lastTransitionTime: - type: string + type: "string" + message: + type: "string" observedGeneration: - type: integer + type: "integer" + reason: + type: "string" + status: + type: "string" type: - type: string - message: - type: string - type: object - type: array - type: object - type: object + type: "string" + type: "object" + type: "array" + lastApplied: + description: "Last spec applied." + type: "string" + type: "object" + type: "object" served: true storage: true subresources: diff --git a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml index 6c4f863d..9b181c4a 100644 --- a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml @@ -1,5093 +1,5346 @@ # Generated by Fabric8 CRDGenerator, manual edits might get overwritten! -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" metadata: - name: brokers.kaap.oss.datastax.com + name: "brokers.kaap.oss.datastax.com" spec: - group: kaap.oss.datastax.com + group: "kaap.oss.datastax.com" names: - kind: Broker - plural: brokers + kind: "Broker" + plural: "brokers" shortNames: - - br - singular: broker - scope: Namespaced + - "br" + singular: "broker" + scope: "Namespaced" versions: - - name: v1beta1 + - name: "v1beta1" schema: openAPIV3Schema: properties: spec: properties: - global: + broker: properties: - components: - description: Pulsar cluster components names. - properties: - brokerBaseName: - description: Broker base name. Default value is 'broker'. - type: string - zookeeperBaseName: - description: Zookeeper base name. Default value is 'zookeeper'. - type: string - functionsWorkerBaseName: - description: Functions Worker base name. Default value is - 'function'. - type: string - autorecoveryBaseName: - description: Autorecovery base name. Default value is 'autorecovery'. - type: string - bookkeeperBaseName: - description: BookKeeper base name. Default value is 'bookkeeper'. - type: string - bastionBaseName: - description: Bastion base name. Default value is 'bastion'. - type: string - proxyBaseName: - description: Proxy base name. Default value is 'proxy'. - type: string - type: object - dnsConfig: - description: | - Override default DNS config for each pod. Note that because we use fully qualified service names for intra - cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents - unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. - For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly - instead of appending the configured search domains. - More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + additionalVolumes: + description: "Mount additional volumes to the pod." properties: - nameservers: - items: - type: string - type: array - searches: - items: - type: string - type: array - options: + mounts: + description: "Mount points for the additional volumes" items: properties: - value: - type: string + mountPath: + type: "string" + mountPropagation: + type: "string" name: - type: string - type: object - type: array - type: object - dnsName: - description: Public dns name for the cluster's load balancer. - type: string - kubernetesClusterDomain: - description: | - The domain name for your kubernetes cluster. - This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . - It's used to fully qualify service names when configuring Pulsar. - The default value is 'cluster.local'. - type: string - priorityClassName: - description: Priority class name to attach to each pod. - type: string - name: - description: Name of the Pulsar cluster spec. This is used as - a prefix for managed Kubernetes resources. - type: string - storage: - description: Storage configuration. - properties: - storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - tls: - description: TLS configuration for the cluster. - properties: - ssCa: - description: "TLS configurations used by additional components,\ - \ such as the Bastion component." - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - certProvisioner: - description: Certificate provisioner configuration. - properties: - selfSigned: - description: Self signed certificate provisioner configuration. - properties: - functionsWorker: - description: Functions worker self signed certificate - config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - includeDns: - description: Include dns name in the DNS names covered - by the certificate. - type: boolean - privateKey: - description: Cert-manager options for generating the - private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - autorecovery: - description: Autorecovery self signed certificate - config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - bookkeeper: - description: Bookkeeper self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - proxy: - description: Proxy self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - zookeeper: - description: Zookeeper self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - broker: - description: Broker self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" + items: + items: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - perComponent: - description: Generate a different certificate for - each component. - type: boolean - enabled: - description: "Generate self signed certificates for\ - \ broker, proxy and functions worker." - type: boolean - caSecretName: - description: Secret where to store the root CA certificate. - type: string - external: - additionalProperties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + metadata: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if - not specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - description: "External services self signed certificate\ - \ config (e.g., admin console, grafana). The key\ - \ is the service name, and the value contains generation\ - \ config" - type: object - type: object - type: object - autorecovery: - description: TLS configurations related to the Autorecovery - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxyResourceSets: - additionalProperties: - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Proxy resource - sets. - type: object - defaultSecretName: - description: Secret name used by each component to load TLS - certificates. Each component can load a different secret - by setting the 'secretName' entry in the tls component spec. - type: string - enabled: - description: Deprecated. Use the 'enabled' field in each component - spec instead. - type: boolean - caPath: - description: Path in the container filesystem where the TLS - CA certificates are retrieved. It has to point to a certificate - file. The default value is /etc/ssl/certs/ca-certificates.crt. - type: string - zookeeper: - description: TLS configurations related to the ZooKeeper component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - brokerResourceSets: - additionalProperties: - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Broker resource - sets. - type: object - functionsWorker: - description: TLS configurations related to the Functions worker - component. - properties: - enabledWithBroker: - description: Enable TLS for the functions worker to broker - connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - broker: - description: TLS configurations related to the Broker component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxy: - description: TLS configurations related to the Proxy component. - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - bookkeeper: - description: TLS configurations related to the BookKeeper - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - type: object - clusterName: - description: Corresponds to the 'clusterName' field in the broker.conf. Defaults - to the value of the 'name' field - type: string - restartOnConfigMapChange: - description: | - By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. - type: boolean - image: - description: Default Pulsar image to use. Any components can be - configured to use a different image. - type: string - auth: - description: | - Authentication and authorization configuration. - properties: - token: - description: Token based authentication configuration. - properties: - privateKeyFile: - description: Private key file name stored in the Secret. - Default is 'my-private.key' - type: string - initialize: - description: Initialize Secrets with new pair of keys - and tokens for the super user roles. The generated Secret - name is 'token-'. - type: boolean - superUserRoles: - description: Super user roles. - items: - type: string - type: array - proxyRoles: - description: Proxy roles. - items: - type: string - type: array - publicKeyFile: - description: Public key file name stored in the Secret. - Default is 'my-public.key' - type: string - type: object - enabled: - description: Enable authentication in the cluster. Default - is 'false'. - type: boolean - type: object - persistence: - description: | - If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir - type: boolean - racks: - additionalProperties: - properties: - host: - description: Enable rack rules based on the hostname of - the node. - properties: - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - zone: - description: Enable rack rules based on the failure domain - (availability zone) of the node. - properties: - enableHostAntiAffinity: - description: "Enable the host anti affinity. If set,\ - \ all the pods of the same rack will deployed on different\ - \ nodes of the same zone.Default is true." - type: boolean - requireRackHostAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced for the host. Default is true.\ - \ If required, the affinity rule will be enforced\ - \ using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - type: object - description: Racks configuration. - type: object - resourceSets: - additionalProperties: - properties: - rack: - description: "Place this resource set to a specific rack,\ - \ defined at .global.racks." - type: string - type: object - description: Resource sets. - type: object - nodeSelectors: - additionalProperties: - type: string - description: "Global node selector. If set, this will apply to\ - \ all the components." - type: object - antiAffinity: - description: Pod anti affinity configuration. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - zookeeperPlainSslStorePassword: - description: "Use plain password in zookeeper server and client\ - \ configuration. Default is false. Old versions of Apache Zookeeper\ - \ (<3.8.0) does not support getting password from file. In that\ - \ case, set this to true." - type: boolean - imagePullPolicy: - description: Default Pulsar image pull policy to use. Any components - can be configured to use a different image pull policy. Default - value is 'IfNotPresent'. - type: string - required: - - name - type: object - broker: - properties: - sets: - additionalProperties: - properties: - updateStrategy: - description: Update strategy for the StatefulSet. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - probes: - description: Liveness and readiness probes configuration. - properties: - useHealthCheckForReadiness: - description: "Use healthcheck for the readiness probe.\ - \ If false, the /metrics endpoint will be used." - type: boolean - useHealthCheckForLiveness: - description: "Use healthcheck for the liveness probe.\ - \ If false, the /metrics endpoint will be used." - type: boolean - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - functionsWorkerEnabled: - description: Enable functions worker embedded in the broker. - type: boolean - transactions: - description: Enable transactions in the broker. - properties: - initJob: - description: Config for the init job. - properties: - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - partitions: - description: Number of coordinators to create. - type: integer - enabled: - description: Initialize the transaction coordinator - if it's not yet and configure the broker to accept - transactions. - type: boolean - type: object - service: - description: Service configuration. - properties: - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - type: object - autoscaler: - description: Autoscaling config. - properties: - periodMs: - description: The interval in milliseconds between two - consecutive autoscaling checks. - minimum: 1000.0 - type: integer - resourcesUsageSource: - description: Source for getting the brokers resources - usage. Possible values are 'PulsarLBReport' and 'K8SMetrics'. - Default is 'PulsarLBReport' - type: string - max: - description: "Max number of brokers. If the number of\ - \ brokers is equals to this value, the autoscaler\ - \ will never scale up." - type: integer - higherCpuThreshold: - description: The threshold to trigger a scale up. The - autoscaler will scale up if all the brokers cpu usage - is higher than this threshold. Default is '0.8' - maximum: 1.0 - minimum: 0.0 - type: number - enabled: - description: Enable autoscaling for brokers. - type: boolean - min: - description: "Min number of brokers. If the number of\ - \ brokers is equals to this value, the autoscaler\ - \ will never scale down." - minimum: 1.0 - type: integer - scaleUpBy: - description: The number of brokers to add at each scale - up. Default is '1' - minimum: 1.0 - type: integer - stabilizationWindowMs: - description: The stabilization window is used to restrict - the flapping of replica count when the metrics used - for scaling keep fluctuating. The autoscaling algorithm - uses this window to infer a previous desired state - and avoid unwanted changes to workload scale.Default - value is 5 minutes after the pod readiness. - minimum: 1.0 - type: integer - lowerCpuThreshold: - description: The threshold to trigger a scale down. - The autoscaler will scale down if all the brokers - cpu usage is lower than this threshold. Default is - '0.4' - maximum: 1.0 - minimum: 0.0 - type: number - scaleDownBy: - description: The number of brokers to remove at each - scale down. Default is '1' - minimum: 1.0 - type: integer - type: object - podManagementPolicy: - description: Pod management policy. - type: string - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the - operator. - type: string - kafka: - description: Enable Kafka protocol. - properties: - exposePorts: - description: Expose the kafka protocol port. - type: boolean - enabled: - description: Allow the cluster to accept Kafka protocol. - Default is 'false'. - type: boolean - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except - pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the - pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: properties: - configMapKeyRef: + accessModes: + items: + type: "string" + type: "array" + dataSource: properties: - optional: - type: boolean - key: - type: string + apiGroup: + type: "string" + kind: + type: "string" name: - type: string - type: object - fieldRef: + type: "string" + type: "object" + dataSourceRef: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: + properties: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: + properties: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: + properties: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: properties: - containerPort: - type: integer - hostPort: - type: integer name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string name: - type: string - type: object - type: array - securityContext: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + autoscaler: + description: "Autoscaling config." + properties: + enabled: + description: "Enable autoscaling for brokers." + type: "boolean" + higherCpuThreshold: + description: "The threshold to trigger a scale up. The autoscaler\ + \ will scale up if all the brokers cpu usage is higher than\ + \ this threshold. Default is '0.8'" + maximum: 1.0 + minimum: 0.0 + type: "number" + lowerCpuThreshold: + description: "The threshold to trigger a scale down. The autoscaler\ + \ will scale down if all the brokers cpu usage is lower\ + \ than this threshold. Default is '0.4'" + maximum: 1.0 + minimum: 0.0 + type: "number" + max: + description: "Max number of brokers. If the number of brokers\ + \ is equals to this value, the autoscaler will never scale\ + \ up." + type: "integer" + min: + description: "Min number of brokers. If the number of brokers\ + \ is equals to this value, the autoscaler will never scale\ + \ down." + minimum: 1.0 + type: "integer" + periodMs: + description: "The interval in milliseconds between two consecutive\ + \ autoscaling checks." + minimum: 1000.0 + type: "integer" + resourcesUsageSource: + description: "Source for getting the brokers resources usage.\ + \ Possible values are 'PulsarLBReport' and 'K8SMetrics'.\ + \ Default is 'PulsarLBReport'" + type: "string" + scaleDownBy: + description: "The number of brokers to remove at each scale\ + \ down. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpBy: + description: "The number of brokers to add at each scale up.\ + \ Default is '1'" + minimum: 1.0 + type: "integer" + stabilizationWindowMs: + description: "The stabilization window is used to restrict\ + \ the flapping of replica count when the metrics used for\ + \ scaling keep fluctuating. The autoscaling algorithm uses\ + \ this window to infer a previous desired state and avoid\ + \ unwanted changes to workload scale.Default value is 5\ + \ minutes after the pod readiness." + minimum: 1.0 + type: "integer" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + functionsWorkerEnabled: + description: "Enable functions worker embedded in the broker." + type: "boolean" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: + configMapKeyRef: properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: properties: - limits: - additionalProperties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: + type: "object" + type: "object" + preStop: + properties: + exec: properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: items: properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: + exec: properties: - nodeSelectorTerms: + command: items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override - the global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for - the StorageClass. + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for - the StorageClass. + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - type: object + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: - description: "Subset of PodSecurityContext for basic UID,\ - \ GID, and volume access control." properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" runAsGroup: - type: integer + type: "integer" runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array + type: "boolean" runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - description: Broker sets. - type: object - setsUpdateStrategy: - description: Sets update strategy. 'RollingUpdate' or 'Parallel'. - Default is 'RollingUpdate'. - type: string - updateStrategy: - description: Update strategy for the StatefulSet. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - probes: - description: Liveness and readiness probes configuration. - properties: - useHealthCheckForReadiness: - description: "Use healthcheck for the readiness probe. If\ - \ false, the /metrics endpoint will be used." - type: boolean - useHealthCheckForLiveness: - description: "Use healthcheck for the liveness probe. If false,\ - \ the /metrics endpoint will be used." - type: boolean - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - functionsWorkerEnabled: - description: Enable functions worker embedded in the broker. - type: boolean - transactions: - description: Enable transactions in the broker. - properties: - initJob: - description: Config for the init job. - properties: - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - partitions: - description: Number of coordinators to create. - type: integer + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + kafka: + description: "Enable Kafka protocol." + properties: enabled: - description: Initialize the transaction coordinator if it's - not yet and configure the broker to accept transactions. - type: boolean - type: object - service: - description: Service configuration. + description: "Allow the cluster to accept Kafka protocol.\ + \ Default is 'false'." + type: "boolean" + exposePorts: + description: "Expose the kafka protocol port." + type: "boolean" + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." properties: - additionalPorts: - description: Additional ports to add to the Service. + preferredDuringSchedulingIgnoredDuringExecution: items: properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - type: object - autoscaler: - description: Autoscaling config. - properties: - periodMs: - description: The interval in milliseconds between two consecutive - autoscaling checks. - minimum: 1000.0 - type: integer - resourcesUsageSource: - description: Source for getting the brokers resources usage. - Possible values are 'PulsarLBReport' and 'K8SMetrics'. Default - is 'PulsarLBReport' - type: string - max: - description: "Max number of brokers. If the number of brokers\ - \ is equals to this value, the autoscaler will never scale\ - \ up." - type: integer - higherCpuThreshold: - description: The threshold to trigger a scale up. The autoscaler - will scale up if all the brokers cpu usage is higher than - this threshold. Default is '0.8' - maximum: 1.0 - minimum: 0.0 - type: number + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: enabled: - description: Enable autoscaling for brokers. - type: boolean - min: - description: "Min number of brokers. If the number of brokers\ - \ is equals to this value, the autoscaler will never scale\ - \ down." - minimum: 1.0 - type: integer - scaleUpBy: - description: The number of brokers to add at each scale up. - Default is '1' - minimum: 1.0 - type: integer - stabilizationWindowMs: - description: The stabilization window is used to restrict - the flapping of replica count when the metrics used for - scaling keep fluctuating. The autoscaling algorithm uses - this window to infer a previous desired state and avoid - unwanted changes to workload scale.Default value is 5 minutes - after the pod readiness. - minimum: 1.0 - type: integer - lowerCpuThreshold: - description: The threshold to trigger a scale down. The autoscaler - will scale down if all the brokers cpu usage is lower than - this threshold. Default is '0.4' - maximum: 1.0 - minimum: 0.0 - type: number - scaleDownBy: - description: The number of brokers to remove at each scale - down. Default is '1' - minimum: 1.0 - type: integer - type: object + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" podManagementPolicy: - description: Pod management policy. - type: string + description: "Pod management policy." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + useHealthCheckForLiveness: + description: "Use healthcheck for the liveness probe. If false,\ + \ the /metrics endpoint will be used." + type: "boolean" + useHealthCheckForReadiness: + description: "Use healthcheck for the readiness probe. If\ + \ false, the /metrics endpoint will be used." + type: "boolean" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" resources: - description: Resources requirements. + description: "Resources requirements." properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the operator. - type: string - kafka: - description: Enable Kafka protocol. + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." properties: - exposePorts: - description: Expose the kafka protocol port. - type: boolean - enabled: - description: Allow the cluster to accept Kafka protocol. Default - is 'false'. - type: boolean - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sets: additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: properties: - lifecycle: + additionalVolumes: + description: "Mount additional volumes to the pod." properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the\ + \ pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: + properties: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: + properties: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: properties: - value: - type: string name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "string" + type: "object" + type: "object" + flocker: + properties: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: properties: - value: - type: string name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: + properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except\ + \ pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override\ + \ the global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." properties: - command: - items: - type: string - type: array - type: object - httpGet: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for\ + \ the StorageClass." properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + type: "object" + autoscaler: + description: "Autoscaling config." + properties: + enabled: + description: "Enable autoscaling for brokers." + type: "boolean" + higherCpuThreshold: + description: "The threshold to trigger a scale up. The\ + \ autoscaler will scale up if all the brokers cpu\ + \ usage is higher than this threshold. Default is\ + \ '0.8'" + maximum: 1.0 + minimum: 0.0 + type: "number" + lowerCpuThreshold: + description: "The threshold to trigger a scale down.\ + \ The autoscaler will scale down if all the brokers\ + \ cpu usage is lower than this threshold. Default\ + \ is '0.4'" + maximum: 1.0 + minimum: 0.0 + type: "number" + max: + description: "Max number of brokers. If the number of\ + \ brokers is equals to this value, the autoscaler\ + \ will never scale up." + type: "integer" + min: + description: "Min number of brokers. If the number of\ + \ brokers is equals to this value, the autoscaler\ + \ will never scale down." + minimum: 1.0 + type: "integer" + periodMs: + description: "The interval in milliseconds between two\ + \ consecutive autoscaling checks." + minimum: 1000.0 + type: "integer" + resourcesUsageSource: + description: "Source for getting the brokers resources\ + \ usage. Possible values are 'PulsarLBReport' and\ + \ 'K8SMetrics'. Default is 'PulsarLBReport'" + type: "string" + scaleDownBy: + description: "The number of brokers to remove at each\ + \ scale down. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpBy: + description: "The number of brokers to add at each scale\ + \ up. Default is '1'" + minimum: 1.0 + type: "integer" + stabilizationWindowMs: + description: "The stabilization window is used to restrict\ + \ the flapping of replica count when the metrics used\ + \ for scaling keep fluctuating. The autoscaling algorithm\ + \ uses this window to infer a previous desired state\ + \ and avoid unwanted changes to workload scale.Default\ + \ value is 5 minutes after the pod readiness." + minimum: 1.0 + type: "integer" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: properties: - value: - type: string + key: + type: "string" name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + functionsWorkerEnabled: + description: "Enable functions worker embedded in the broker." + type: "boolean" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: properties: - configMapKeyRef: + exec: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - containerName: - type: string - divisor: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + kafka: + description: "Enable Kafka protocol." properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + enabled: + description: "Allow the cluster to accept Kafka protocol.\ + \ Default is 'false'." + type: "boolean" + exposePorts: + description: "Expose the kafka protocol port." + type: "boolean" + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: properties: - add: - items: - type: string - type: array - drop: + nodeSelectorTerms: items: - type: string - type: array - type: object - seLinuxOptions: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the\ + \ operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + useHealthCheckForLiveness: + description: "Use healthcheck for the liveness probe.\ + \ If false, the /metrics endpoint will be used." + type: "boolean" + useHealthCheckForReadiness: + description: "Use healthcheck for the readiness probe.\ + \ If false, the /metrics endpoint will be used." + type: "boolean" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" resources: + description: "Resources requirements." properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: properties: name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: items: - items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: - items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: properties: + devicePath: + type: "string" name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: + type: "string" + type: "object" + type: "array" + volumeMounts: items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: properties: + mountPath: + type: "string" + mountPropagation: + type: "string" name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + transactions: + description: "Enable transactions in the broker." + properties: + enabled: + description: "Initialize the transaction coordinator\ + \ if it's not yet and configure the broker to accept\ + \ transactions." + type: "boolean" + initJob: + description: "Config for the init job." properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + partitions: + description: "Number of coordinators to create." + type: "integer" + type: "object" + updateStrategy: + description: "Update strategy for the StatefulSet." + properties: + rollingUpdate: properties: - containerName: - type: string - divisor: + maxUnavailable: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + type: "object" + description: "Broker sets." + type: "object" + setsUpdateStrategy: + description: "Sets update strategy. 'RollingUpdate' or 'Parallel'.\ + \ Default is 'RollingUpdate'." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: properties: - value: - type: string - valueFrom: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" startupProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" stdinOnce: - type: boolean - ports: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: - containerPort: - type: integer - hostPort: - type: integer + devicePath: + type: "string" name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array + type: "string" + type: "object" + type: "array" volumeMounts: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string mountPath: - type: string + type: "string" mountPropagation: - type: string - subPath: - type: string + type: "string" name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + transactions: + description: "Enable transactions in the broker." + properties: + enabled: + description: "Initialize the transaction coordinator if it's\ + \ not yet and configure the broker to accept transactions." + type: "boolean" + initJob: + description: "Config for the init job." + properties: + resources: + description: "Resources requirements." properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + partitions: + description: "Number of coordinators to create." + type: "integer" + type: "object" + updateStrategy: + description: "Update strategy for the StatefulSet." + properties: + rollingUpdate: + properties: + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + type: "object" + global: + properties: + antiAffinity: + description: "Pod anti affinity configuration." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + auth: + description: | + Authentication and authorization configuration. properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: + description: "Enable authentication in the cluster. Default\ + \ is 'false'." + type: "boolean" + token: + description: "Token based authentication configuration." + properties: + initialize: + description: "Initialize Secrets with new pair of keys\ + \ and tokens for the super user roles. The generated\ + \ Secret name is 'token-'." + type: "boolean" + privateKeyFile: + description: "Private key file name stored in the Secret.\ + \ Default is 'my-private.key'" + type: "string" + proxyRoles: + description: "Proxy roles." + items: + type: "string" + type: "array" + publicKeyFile: + description: "Public key file name stored in the Secret.\ + \ Default is 'my-public.key'" + type: "string" + superUserRoles: + description: "Super user roles." + items: + type: "string" + type: "array" + type: "object" + type: "object" + clusterName: + description: "Corresponds to the 'clusterName' field in the broker.conf.\ + \ Defaults to the value of the 'name' field" + type: "string" + components: + description: "Pulsar cluster components names." + properties: + autorecoveryBaseName: + description: "Autorecovery base name. Default value is 'autorecovery'." + type: "string" + bastionBaseName: + description: "Bastion base name. Default value is 'bastion'." + type: "string" + bookkeeperBaseName: + description: "BookKeeper base name. Default value is 'bookkeeper'." + type: "string" + brokerBaseName: + description: "Broker base name. Default value is 'broker'." + type: "string" + functionsWorkerBaseName: + description: "Functions Worker base name. Default value is\ + \ 'function'." + type: "string" + proxyBaseName: + description: "Proxy base name. Default value is 'proxy'." + type: "string" + zookeeperBaseName: + description: "Zookeeper base name. Default value is 'zookeeper'." + type: "string" + type: "object" + dnsConfig: + description: | + Override default DNS config for each pod. Note that because we use fully qualified service names for intra + cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents + unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. + For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly + instead of appending the configured search domains. + More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + properties: + nameservers: + items: + type: "string" + type: "array" + options: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + searches: + items: + type: "string" + type: "array" + type: "object" + dnsName: + description: "Public dns name for the cluster's load balancer." + type: "string" + image: + description: "Default Pulsar image to use. Any components can\ + \ be configured to use a different image." + type: "string" + imagePullPolicy: + description: "Default Pulsar image pull policy to use. Any components\ + \ can be configured to use a different image pull policy. Default\ + \ value is 'IfNotPresent'." + type: "string" + kubernetesClusterDomain: + description: | + The domain name for your kubernetes cluster. + This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . + It's used to fully qualify service names when configuring Pulsar. + The default value is 'cluster.local'. + type: "string" + name: + description: "Name of the Pulsar cluster spec. This is used as\ + \ a prefix for managed Kubernetes resources." + type: "string" + nodeSelectors: + additionalProperties: + type: "string" + description: "Global node selector. If set, this will apply to\ + \ all the components." + type: "object" + persistence: + description: | + If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir + type: "boolean" + priorityClassName: + description: "Priority class name to attach to each pod." + type: "string" + racks: + additionalProperties: + properties: + host: + description: "Enable rack rules based on the hostname of\ + \ the node." + properties: + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + zone: + description: "Enable rack rules based on the failure domain\ + \ (availability zone) of the node." + properties: + enableHostAntiAffinity: + description: "Enable the host anti affinity. If set,\ + \ all the pods of the same rack will deployed on different\ + \ nodes of the same zone.Default is true." + type: "boolean" + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackHostAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced for the host. Default is true.\ + \ If required, the affinity rule will be enforced\ + \ using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + type: "object" + description: "Racks configuration." + type: "object" + resourceSets: + additionalProperties: properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. + rack: + description: "Place this resource set to a specific rack,\ + \ defined at .global.racks." + type: "string" + type: "object" + description: "Resource sets." + type: "object" + restartOnConfigMapChange: + description: | + By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. + type: "boolean" + storage: + description: "Storage configuration." properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" + tls: + description: "TLS configuration for the cluster." + properties: + autorecovery: + description: "TLS configurations related to the Autorecovery\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + bookkeeper: + description: "TLS configurations related to the BookKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + broker: + description: "TLS configurations related to the Broker component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + brokerResourceSets: + additionalProperties: properties: - weight: - type: integer - preference: - properties: - matchFields: - items: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Broker resource\ + \ sets." + type: "object" + caPath: + description: "Path in the container filesystem where the TLS\ + \ CA certificates are retrieved. It has to point to a certificate\ + \ file. The default value is /etc/ssl/certs/ca-certificates.crt." + type: "string" + certProvisioner: + description: "Certificate provisioner configuration." + properties: + selfSigned: + description: "Self signed certificate provisioner configuration." + properties: + autorecovery: + description: "Autorecovery self signed certificate\ + \ config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + bookkeeper: + description: "Bookkeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + caSecretName: + description: "Secret where to store the root CA certificate." + type: "string" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension along\ + \ with the default K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + functionsWorker: + description: "Functions worker self signed certificate\ + \ config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + includeDns: + description: "Include dns name in the DNS names covered\ + \ by the certificate." + type: "boolean" + perComponent: + description: "Generate a different certificate for\ + \ each component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + zookeeper: + description: "Zookeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" + type: "object" + defaultSecretName: + description: "Secret name used by each component to load TLS\ + \ certificates. Each component can load a different secret\ + \ by setting the 'secretName' entry in the tls component\ + \ spec." + type: "string" + enabled: + description: "Deprecated. Use the 'enabled' field in each\ + \ component spec instead." + type: "boolean" + functionsWorker: + description: "TLS configurations related to the Functions\ + \ worker component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the functions worker to broker\ + \ connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxy: + description: "TLS configurations related to the Proxy component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - type: object + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxyResourceSets: + additionalProperties: + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Proxy resource\ + \ sets." + type: "object" + ssCa: + description: "TLS configurations used by additional components,\ + \ such as the Bastion component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + zookeeper: + description: "TLS configurations related to the ZooKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + type: "object" + zookeeperPlainSslStorePassword: + description: "Use plain password in zookeeper server and client\ + \ configuration. Default is false. Old versions of Apache Zookeeper\ + \ (<3.8.0) does not support getting password from file. In that\ + \ case, set this to true." + type: "boolean" + required: + - "name" + type: "object" + type: "object" status: properties: - lastApplied: - description: Last spec applied. - type: string conditions: description: |- Conditions: 1. Condition Ready: possible status are True or False. If False, the reason contains the error message. items: properties: - status: - type: string - reason: - type: string lastTransitionTime: - type: string + type: "string" + message: + type: "string" observedGeneration: - type: integer + type: "integer" + reason: + type: "string" + status: + type: "string" type: - type: string - message: - type: string - type: object - type: array - type: object - type: object + type: "string" + type: "object" + type: "array" + lastApplied: + description: "Last spec applied." + type: "string" + type: "object" + type: "object" served: true storage: true subresources: diff --git a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml index 65d42531..9f685961 100644 --- a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml @@ -1,2858 +1,2978 @@ # Generated by Fabric8 CRDGenerator, manual edits might get overwritten! -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" metadata: - name: functionsworkers.kaap.oss.datastax.com + name: "functionsworkers.kaap.oss.datastax.com" spec: - group: kaap.oss.datastax.com + group: "kaap.oss.datastax.com" names: - kind: FunctionsWorker - plural: functionsworkers + kind: "FunctionsWorker" + plural: "functionsworkers" shortNames: - - fn - - fnw - - fw - singular: functionsworker - scope: Namespaced + - "fn" + - "fnw" + - "fw" + singular: "functionsworker" + scope: "Namespaced" versions: - - name: v1beta1 + - name: "v1beta1" schema: openAPIV3Schema: properties: spec: properties: - global: + functionsWorker: properties: - components: - description: Pulsar cluster components names. - properties: - brokerBaseName: - description: Broker base name. Default value is 'broker'. - type: string - zookeeperBaseName: - description: Zookeeper base name. Default value is 'zookeeper'. - type: string - functionsWorkerBaseName: - description: Functions Worker base name. Default value is - 'function'. - type: string - autorecoveryBaseName: - description: Autorecovery base name. Default value is 'autorecovery'. - type: string - bookkeeperBaseName: - description: BookKeeper base name. Default value is 'bookkeeper'. - type: string - bastionBaseName: - description: Bastion base name. Default value is 'bastion'. - type: string - proxyBaseName: - description: Proxy base name. Default value is 'proxy'. - type: string - type: object - dnsConfig: - description: | - Override default DNS config for each pod. Note that because we use fully qualified service names for intra - cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents - unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. - For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly - instead of appending the configured search domains. - More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + additionalVolumes: + description: "Mount additional volumes to the pod." properties: - nameservers: - items: - type: string - type: array - searches: - items: - type: string - type: array - options: + mounts: + description: "Mount points for the additional volumes" items: properties: - value: - type: string + mountPath: + type: "string" + mountPropagation: + type: "string" name: - type: string - type: object - type: array - type: object - dnsName: - description: Public dns name for the cluster's load balancer. - type: string - kubernetesClusterDomain: - description: | - The domain name for your kubernetes cluster. - This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . - It's used to fully qualify service names when configuring Pulsar. - The default value is 'cluster.local'. - type: string - priorityClassName: - description: Priority class name to attach to each pod. - type: string - name: - description: Name of the Pulsar cluster spec. This is used as - a prefix for managed Kubernetes resources. - type: string - storage: - description: Storage configuration. - properties: - storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - tls: - description: TLS configuration for the cluster. - properties: - ssCa: - description: "TLS configurations used by additional components,\ - \ such as the Bastion component." - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - certProvisioner: - description: Certificate provisioner configuration. - properties: - selfSigned: - description: Self signed certificate provisioner configuration. - properties: - functionsWorker: - description: Functions worker self signed certificate - config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - includeDns: - description: Include dns name in the DNS names covered - by the certificate. - type: boolean - privateKey: - description: Cert-manager options for generating the - private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - autorecovery: - description: Autorecovery self signed certificate - config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - bookkeeper: - description: Bookkeeper self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - proxy: - description: Proxy self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - zookeeper: - description: Zookeeper self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - broker: - description: Broker self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" + items: + items: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - perComponent: - description: Generate a different certificate for - each component. - type: boolean - enabled: - description: "Generate self signed certificates for\ - \ broker, proxy and functions worker." - type: boolean - caSecretName: - description: Secret where to store the root CA certificate. - type: string - external: - additionalProperties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + metadata: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if - not specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - description: "External services self signed certificate\ - \ config (e.g., admin console, grafana). The key\ - \ is the service name, and the value contains generation\ - \ config" - type: object - type: object - type: object - autorecovery: - description: TLS configurations related to the Autorecovery - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxyResourceSets: - additionalProperties: - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Proxy resource - sets. - type: object - defaultSecretName: - description: Secret name used by each component to load TLS - certificates. Each component can load a different secret - by setting the 'secretName' entry in the tls component spec. - type: string - enabled: - description: Deprecated. Use the 'enabled' field in each component - spec instead. - type: boolean - caPath: - description: Path in the container filesystem where the TLS - CA certificates are retrieved. It has to point to a certificate - file. The default value is /etc/ssl/certs/ca-certificates.crt. - type: string - zookeeper: - description: TLS configurations related to the ZooKeeper component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - brokerResourceSets: - additionalProperties: - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Broker resource - sets. - type: object - functionsWorker: - description: TLS configurations related to the Functions worker - component. - properties: - enabledWithBroker: - description: Enable TLS for the functions worker to broker - connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - broker: - description: TLS configurations related to the Broker component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxy: - description: TLS configurations related to the Proxy component. - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - bookkeeper: - description: TLS configurations related to the BookKeeper - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - type: object - clusterName: - description: Corresponds to the 'clusterName' field in the broker.conf. Defaults - to the value of the 'name' field - type: string - restartOnConfigMapChange: - description: | - By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. - type: boolean - image: - description: Default Pulsar image to use. Any components can be - configured to use a different image. - type: string - auth: - description: | - Authentication and authorization configuration. - properties: - token: - description: Token based authentication configuration. - properties: - privateKeyFile: - description: Private key file name stored in the Secret. - Default is 'my-private.key' - type: string - initialize: - description: Initialize Secrets with new pair of keys - and tokens for the super user roles. The generated Secret - name is 'token-'. - type: boolean - superUserRoles: - description: Super user roles. - items: - type: string - type: array - proxyRoles: - description: Proxy roles. - items: - type: string - type: array - publicKeyFile: - description: Public key file name stored in the Secret. - Default is 'my-public.key' - type: string - type: object - enabled: - description: Enable authentication in the cluster. Default - is 'false'. - type: boolean - type: object - persistence: - description: | - If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir - type: boolean - racks: - additionalProperties: - properties: - host: - description: Enable rack rules based on the hostname of - the node. - properties: - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - zone: - description: Enable rack rules based on the failure domain - (availability zone) of the node. - properties: - enableHostAntiAffinity: - description: "Enable the host anti affinity. If set,\ - \ all the pods of the same rack will deployed on different\ - \ nodes of the same zone.Default is true." - type: boolean - requireRackHostAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced for the host. Default is true.\ - \ If required, the affinity rule will be enforced\ - \ using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - type: object - description: Racks configuration. - type: object - resourceSets: - additionalProperties: - properties: - rack: - description: "Place this resource set to a specific rack,\ - \ defined at .global.racks." - type: string - type: object - description: Resource sets. - type: object - nodeSelectors: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: + properties: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: + properties: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: + properties: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: + properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: additionalProperties: - type: string - description: "Global node selector. If set, this will apply to\ - \ all the components." - type: object + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" antiAffinity: - description: Pod anti affinity configuration. + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." properties: host: - description: Indicates the reclaimPolicy property for the - StorageClass. + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" zone: - description: Indicates the provisioner property for the StorageClass. + description: "Indicates the provisioner property for the StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - zookeeperPlainSslStorePassword: - description: "Use plain password in zookeeper server and client\ - \ configuration. Default is false. Old versions of Apache Zookeeper\ - \ (<3.8.0) does not support getting password from file. In that\ - \ case, set this to true." - type: boolean - imagePullPolicy: - description: Default Pulsar image pull policy to use. Any components - can be configured to use a different image pull policy. Default - value is 'IfNotPresent'. - type: string - required: - - name - type: object - functionsWorker: - properties: - updateStrategy: - description: Update strategy for the StatefulSet. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" config: - description: Configuration. + description: "Configuration." x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - service: - description: Service configuration. - properties: - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - type: object - rbac: - description: RBAC config. - properties: - namespaced: - description: Whether or not the RBAC is created per-namespace - or cluster-wise. - type: boolean - create: - description: Create needed RBAC to run the Functions Worker. - type: boolean - type: object - podManagementPolicy: - description: Pod management policy. - type: string - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - runtime: - description: Runtime mode for functions. - type: string - logsVolume: - description: Volume configuration for export function logs. - properties: - storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the volume. - The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. Default - value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - imagePullSecrets: - description: Image pull secrets. + env: + description: "Additional container env variables." items: properties: name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: + type: "string" + value: + type: "string" + valueFrom: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + configMapKeyRef: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - command: - items: - type: string - type: array - type: object - httpGet: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + containerName: + type: "string" + divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" env: items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string + type: "string" name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" envFrom: items: properties: - prefix: - type: string configMapRef: properties: - optional: - type: boolean name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" secretRef: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the pod - items: + type: "string" + lifecycle: properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: + postStart: properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: + exec: properties: - name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: properties: - nodePublishSecretRef: + exec: properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: properties: - optional: - type: boolean - secretName: - type: string - items: + command: items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - optional: - type: boolean - items: + host: + type: "string" + httpHeaders: items: properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: + add: items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: + type: "string" + type: "array" + drop: items: - type: string - type: array - fsType: - type: string + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" user: - type: string - type: object - azureFile: + type: "string" + type: "object" + seccompProfile: properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: properties: - defaultMode: - type: integer - sources: + command: items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - path: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - monitors: + host: + type: "string" + httpHeaders: items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - sizeLimit: + host: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + logsVolume: + description: "Volume configuration for export function logs." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" + name: + description: "Indicates the suffix for the volume. Default\ + \ value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the volume.\ + \ The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: properties: - readOnly: - type: boolean - lun: - type: integer - wwids: + matchExpressions: items: - type: string - type: array - targetWWNs: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + type: "object" + rbac: + description: "RBAC config." + properties: + create: + description: "Create needed RBAC to run the Functions Worker." + type: "boolean" + namespaced: + description: "Whether or not the RBAC is created per-namespace\ + \ or cluster-wise." + type: "boolean" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + runtime: + description: "Runtime mode for functions." + type: "string" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." items: properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string + appProtocol: + type: "string" name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: + type: "integer" + type: "object" + name: + type: "string" + ports: items: properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: - properties: - path: - type: string - scheme: - type: string + properties: host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" tolerations: - description: Pod tolerations. + description: "Pod tolerations." items: properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Update strategy for the StatefulSet." + properties: + rollingUpdate: + properties: + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + type: "object" + global: + properties: + antiAffinity: + description: "Pod anti affinity configuration." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + auth: + description: | + Authentication and authorization configuration. + properties: + enabled: + description: "Enable authentication in the cluster. Default\ + \ is 'false'." + type: "boolean" + token: + description: "Token based authentication configuration." + properties: + initialize: + description: "Initialize Secrets with new pair of keys\ + \ and tokens for the super user roles. The generated\ + \ Secret name is 'token-'." + type: "boolean" + privateKeyFile: + description: "Private key file name stored in the Secret.\ + \ Default is 'my-private.key'" + type: "string" + proxyRoles: + description: "Proxy roles." + items: + type: "string" + type: "array" + publicKeyFile: + description: "Public key file name stored in the Secret.\ + \ Default is 'my-public.key'" + type: "string" + superUserRoles: + description: "Super user roles." + items: + type: "string" + type: "array" + type: "object" + type: "object" + clusterName: + description: "Corresponds to the 'clusterName' field in the broker.conf.\ + \ Defaults to the value of the 'name' field" + type: "string" + components: + description: "Pulsar cluster components names." + properties: + autorecoveryBaseName: + description: "Autorecovery base name. Default value is 'autorecovery'." + type: "string" + bastionBaseName: + description: "Bastion base name. Default value is 'bastion'." + type: "string" + bookkeeperBaseName: + description: "BookKeeper base name. Default value is 'bookkeeper'." + type: "string" + brokerBaseName: + description: "Broker base name. Default value is 'broker'." + type: "string" + functionsWorkerBaseName: + description: "Functions Worker base name. Default value is\ + \ 'function'." + type: "string" + proxyBaseName: + description: "Proxy base name. Default value is 'proxy'." + type: "string" + zookeeperBaseName: + description: "Zookeeper base name. Default value is 'zookeeper'." + type: "string" + type: "object" + dnsConfig: + description: | + Override default DNS config for each pod. Note that because we use fully qualified service names for intra + cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents + unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. + For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly + instead of appending the configured search domains. + More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + properties: + nameservers: + items: + type: "string" + type: "array" + options: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + searches: + items: + type: "string" + type: "array" + type: "object" + dnsName: + description: "Public dns name for the cluster's load balancer." + type: "string" + image: + description: "Default Pulsar image to use. Any components can\ + \ be configured to use a different image." + type: "string" + imagePullPolicy: + description: "Default Pulsar image pull policy to use. Any components\ + \ can be configured to use a different image pull policy. Default\ + \ value is 'IfNotPresent'." + type: "string" + kubernetesClusterDomain: + description: | + The domain name for your kubernetes cluster. + This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . + It's used to fully qualify service names when configuring Pulsar. + The default value is 'cluster.local'. + type: "string" + name: + description: "Name of the Pulsar cluster spec. This is used as\ + \ a prefix for managed Kubernetes resources." + type: "string" + nodeSelectors: + additionalProperties: + type: "string" + description: "Global node selector. If set, this will apply to\ + \ all the components." + type: "object" + persistence: + description: | + If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir + type: "boolean" + priorityClassName: + description: "Priority class name to attach to each pod." + type: "string" + racks: + additionalProperties: + properties: + host: + description: "Enable rack rules based on the hostname of\ + \ the node." + properties: + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + zone: + description: "Enable rack rules based on the failure domain\ + \ (availability zone) of the node." + properties: + enableHostAntiAffinity: + description: "Enable the host anti affinity. If set,\ + \ all the pods of the same rack will deployed on different\ + \ nodes of the same zone.Default is true." + type: "boolean" + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackHostAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced for the host. Default is true.\ + \ If required, the affinity rule will be enforced\ + \ using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + type: "object" + description: "Racks configuration." + type: "object" + resourceSets: + additionalProperties: + properties: + rack: + description: "Place this resource set to a specific rack,\ + \ defined at .global.racks." + type: "string" + type: "object" + description: "Resource sets." + type: "object" + restartOnConfigMapChange: + description: | + By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. + type: "boolean" + storage: + description: "Storage configuration." properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" + tls: + description: "TLS configuration for the cluster." + properties: + autorecovery: + description: "TLS configurations related to the Autorecovery\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + bookkeeper: + description: "TLS configurations related to the BookKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + broker: + description: "TLS configurations related to the Broker component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + brokerResourceSets: + additionalProperties: properties: - weight: - type: integer - preference: - properties: - matchFields: - items: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Broker resource\ + \ sets." + type: "object" + caPath: + description: "Path in the container filesystem where the TLS\ + \ CA certificates are retrieved. It has to point to a certificate\ + \ file. The default value is /etc/ssl/certs/ca-certificates.crt." + type: "string" + certProvisioner: + description: "Certificate provisioner configuration." + properties: + selfSigned: + description: "Self signed certificate provisioner configuration." + properties: + autorecovery: + description: "Autorecovery self signed certificate\ + \ config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + bookkeeper: + description: "Bookkeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + caSecretName: + description: "Secret where to store the root CA certificate." + type: "string" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension along\ + \ with the default K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + functionsWorker: + description: "Functions worker self signed certificate\ + \ config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + includeDns: + description: "Include dns name in the DNS names covered\ + \ by the certificate." + type: "boolean" + perComponent: + description: "Generate a different certificate for\ + \ each component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + zookeeper: + description: "Zookeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" + type: "object" + defaultSecretName: + description: "Secret name used by each component to load TLS\ + \ certificates. Each component can load a different secret\ + \ by setting the 'secretName' entry in the tls component\ + \ spec." + type: "string" + enabled: + description: "Deprecated. Use the 'enabled' field in each\ + \ component spec instead." + type: "boolean" + functionsWorker: + description: "TLS configurations related to the Functions\ + \ worker component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the functions worker to broker\ + \ connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxy: + description: "TLS configurations related to the Proxy component." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - type: object + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxyResourceSets: + additionalProperties: + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Proxy resource\ + \ sets." + type: "object" + ssCa: + description: "TLS configurations used by additional components,\ + \ such as the Bastion component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + zookeeper: + description: "TLS configurations related to the ZooKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + type: "object" + zookeeperPlainSslStorePassword: + description: "Use plain password in zookeeper server and client\ + \ configuration. Default is false. Old versions of Apache Zookeeper\ + \ (<3.8.0) does not support getting password from file. In that\ + \ case, set this to true." + type: "boolean" + required: + - "name" + type: "object" + type: "object" status: properties: - lastApplied: - description: Last spec applied. - type: string conditions: description: |- Conditions: 1. Condition Ready: possible status are True or False. If False, the reason contains the error message. items: properties: - status: - type: string - reason: - type: string lastTransitionTime: - type: string + type: "string" + message: + type: "string" observedGeneration: - type: integer + type: "integer" + reason: + type: "string" + status: + type: "string" type: - type: string - message: - type: string - type: object - type: array - type: object - type: object + type: "string" + type: "object" + type: "array" + lastApplied: + description: "Last spec applied." + type: "string" + type: "object" + type: "object" served: true storage: true subresources: diff --git a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml index e1abb87e..21769e24 100644 --- a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml @@ -1,19 +1,19 @@ # Generated by Fabric8 CRDGenerator, manual edits might get overwritten! -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" metadata: - name: proxies.kaap.oss.datastax.com + name: "proxies.kaap.oss.datastax.com" spec: - group: kaap.oss.datastax.com + group: "kaap.oss.datastax.com" names: - kind: Proxy - plural: proxies + kind: "Proxy" + plural: "proxies" shortNames: - - pr - singular: proxy - scope: Namespaced + - "pr" + singular: "proxy" + scope: "Namespaced" versions: - - name: v1beta1 + - name: "v1beta1" schema: openAPIV3Schema: properties: @@ -21,32 +21,101 @@ spec: properties: global: properties: + antiAffinity: + description: "Pod anti affinity configuration." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + auth: + description: | + Authentication and authorization configuration. + properties: + enabled: + description: "Enable authentication in the cluster. Default\ + \ is 'false'." + type: "boolean" + token: + description: "Token based authentication configuration." + properties: + initialize: + description: "Initialize Secrets with new pair of keys\ + \ and tokens for the super user roles. The generated\ + \ Secret name is 'token-'." + type: "boolean" + privateKeyFile: + description: "Private key file name stored in the Secret.\ + \ Default is 'my-private.key'" + type: "string" + proxyRoles: + description: "Proxy roles." + items: + type: "string" + type: "array" + publicKeyFile: + description: "Public key file name stored in the Secret.\ + \ Default is 'my-public.key'" + type: "string" + superUserRoles: + description: "Super user roles." + items: + type: "string" + type: "array" + type: "object" + type: "object" + clusterName: + description: "Corresponds to the 'clusterName' field in the broker.conf.\ + \ Defaults to the value of the 'name' field" + type: "string" components: - description: Pulsar cluster components names. + description: "Pulsar cluster components names." properties: - brokerBaseName: - description: Broker base name. Default value is 'broker'. - type: string - zookeeperBaseName: - description: Zookeeper base name. Default value is 'zookeeper'. - type: string - functionsWorkerBaseName: - description: Functions Worker base name. Default value is - 'function'. - type: string autorecoveryBaseName: - description: Autorecovery base name. Default value is 'autorecovery'. - type: string - bookkeeperBaseName: - description: BookKeeper base name. Default value is 'bookkeeper'. - type: string + description: "Autorecovery base name. Default value is 'autorecovery'." + type: "string" bastionBaseName: - description: Bastion base name. Default value is 'bastion'. - type: string + description: "Bastion base name. Default value is 'bastion'." + type: "string" + bookkeeperBaseName: + description: "BookKeeper base name. Default value is 'bookkeeper'." + type: "string" + brokerBaseName: + description: "Broker base name. Default value is 'broker'." + type: "string" + functionsWorkerBaseName: + description: "Functions Worker base name. Default value is\ + \ 'function'." + type: "string" proxyBaseName: - description: Proxy base name. Default value is 'proxy'. - type: string - type: object + description: "Proxy base name. Default value is 'proxy'." + type: "string" + zookeeperBaseName: + description: "Zookeeper base name. Default value is 'zookeeper'." + type: "string" + type: "object" dnsConfig: description: | Override default DNS config for each pod. Note that because we use fully qualified service names for intra @@ -58,5034 +127,5217 @@ spec: properties: nameservers: items: - type: string - type: array - searches: - items: - type: string - type: array + type: "string" + type: "array" options: items: properties: - value: - type: string name: - type: string - type: object - type: array - type: object + type: "string" + value: + type: "string" + type: "object" + type: "array" + searches: + items: + type: "string" + type: "array" + type: "object" dnsName: - description: Public dns name for the cluster's load balancer. - type: string + description: "Public dns name for the cluster's load balancer." + type: "string" + image: + description: "Default Pulsar image to use. Any components can\ + \ be configured to use a different image." + type: "string" + imagePullPolicy: + description: "Default Pulsar image pull policy to use. Any components\ + \ can be configured to use a different image pull policy. Default\ + \ value is 'IfNotPresent'." + type: "string" kubernetesClusterDomain: description: | The domain name for your kubernetes cluster. This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . It's used to fully qualify service names when configuring Pulsar. The default value is 'cluster.local'. - type: string - priorityClassName: - description: Priority class name to attach to each pod. - type: string + type: "string" name: - description: Name of the Pulsar cluster spec. This is used as - a prefix for managed Kubernetes resources. - type: string + description: "Name of the Pulsar cluster spec. This is used as\ + \ a prefix for managed Kubernetes resources." + type: "string" + nodeSelectors: + additionalProperties: + type: "string" + description: "Global node selector. If set, this will apply to\ + \ all the components." + type: "object" + persistence: + description: | + If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir + type: "boolean" + priorityClassName: + description: "Priority class name to attach to each pod." + type: "string" + racks: + additionalProperties: + properties: + host: + description: "Enable rack rules based on the hostname of\ + \ the node." + properties: + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + zone: + description: "Enable rack rules based on the failure domain\ + \ (availability zone) of the node." + properties: + enableHostAntiAffinity: + description: "Enable the host anti affinity. If set,\ + \ all the pods of the same rack will deployed on different\ + \ nodes of the same zone.Default is true." + type: "boolean" + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackHostAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced for the host. Default is true.\ + \ If required, the affinity rule will be enforced\ + \ using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + type: "object" + description: "Racks configuration." + type: "object" + resourceSets: + additionalProperties: + properties: + rack: + description: "Place this resource set to a specific rack,\ + \ defined at .global.racks." + type: "string" + type: "object" + description: "Resource sets." + type: "object" + restartOnConfigMapChange: + description: | + By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. + type: "boolean" storage: - description: Storage configuration. + description: "Storage configuration." properties: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." properties: extraParams: additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" tls: - description: TLS configuration for the cluster. + description: "TLS configuration for the cluster." properties: - ssCa: - description: "TLS configurations used by additional components,\ - \ such as the Bastion component." + autorecovery: + description: "TLS configurations related to the Autorecovery\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + bookkeeper: + description: "TLS configurations related to the BookKeeper\ + \ component." properties: + enabled: + description: "Enable TLS." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + broker: + description: "TLS configurations related to the Broker component." + properties: enabled: - description: Enable TLS. - type: boolean - type: object + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + brokerResourceSets: + additionalProperties: + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Broker resource\ + \ sets." + type: "object" + caPath: + description: "Path in the container filesystem where the TLS\ + \ CA certificates are retrieved. It has to point to a certificate\ + \ file. The default value is /etc/ssl/certs/ca-certificates.crt." + type: "string" certProvisioner: - description: Certificate provisioner configuration. + description: "Certificate provisioner configuration." properties: selfSigned: - description: Self signed certificate provisioner configuration. + description: "Self signed certificate provisioner configuration." properties: - functionsWorker: - description: Functions worker self signed certificate - config. + autorecovery: + description: "Autorecovery self signed certificate\ + \ config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - includeDns: - description: Include dns name in the DNS names covered - by the certificate. - type: boolean - privateKey: - description: Cert-manager options for generating the - private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - autorecovery: - description: Autorecovery self signed certificate - config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + bookkeeper: + description: "Bookkeeper self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - bookkeeper: - description: Bookkeeper self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + broker: + description: "Broker self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - proxy: - description: Proxy self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + caSecretName: + description: "Secret where to store the root CA certificate." + type: "string" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension along\ + \ with the default K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + functionsWorker: + description: "Functions worker self signed certificate\ + \ config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - zookeeper: - description: Zookeeper self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + includeDns: + description: "Include dns name in the DNS names covered\ + \ by the certificate." + type: "boolean" + perComponent: + description: "Generate a different certificate for\ + \ each component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - broker: - description: Broker self signed certificate config. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + zookeeper: + description: "Zookeeper self signed certificate config." properties: dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." items: - type: string - type: array + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" privateKey: - description: Cert-manager options for generating - the private key. + description: "Cert-manager options for generating\ + \ the private key." properties: - rotationPolicy: - type: string - encoding: - type: string algorithm: - type: string + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" size: - type: integer - type: object + type: "integer" + type: "object" secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - perComponent: - description: Generate a different certificate for - each component. - type: boolean - enabled: - description: "Generate self signed certificates for\ - \ broker, proxy and functions worker." - type: boolean - caSecretName: - description: Secret where to store the root CA certificate. - type: string - external: - additionalProperties: - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if - not specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - description: "External services self signed certificate\ - \ config (e.g., admin console, grafana). The key\ - \ is the service name, and the value contains generation\ - \ config" - type: object - type: object - type: object - autorecovery: - description: TLS configurations related to the Autorecovery - component. + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" + type: "object" + defaultSecretName: + description: "Secret name used by each component to load TLS\ + \ certificates. Each component can load a different secret\ + \ by setting the 'secretName' entry in the tls component\ + \ spec." + type: "string" + enabled: + description: "Deprecated. Use the 'enabled' field in each\ + \ component spec instead." + type: "boolean" + functionsWorker: + description: "TLS configurations related to the Functions\ + \ worker component." properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the functions worker to broker\ + \ connections." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxy: + description: "TLS configurations related to the Proxy component." + properties: enabled: - description: Enable TLS. - type: boolean - type: object + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" proxyResourceSets: additionalProperties: properties: + enabled: + description: "Enable TLS." + type: "boolean" enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean + description: "Enable TLS for the proxy to broker connections." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Proxy resource - sets. - type: object - defaultSecretName: - description: Secret name used by each component to load TLS - certificates. Each component can load a different secret - by setting the 'secretName' entry in the tls component spec. - type: string - enabled: - description: Deprecated. Use the 'enabled' field in each component - spec instead. - type: boolean - caPath: - description: Path in the container filesystem where the TLS - CA certificates are retrieved. It has to point to a certificate - file. The default value is /etc/ssl/certs/ca-certificates.crt. - type: string - zookeeper: - description: TLS configurations related to the ZooKeeper component. + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Proxy resource\ + \ sets." + type: "object" + ssCa: + description: "TLS configurations used by additional components,\ + \ such as the Bastion component." properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string enabled: - description: Enable TLS. - type: boolean - type: object - brokerResourceSets: - additionalProperties: - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Broker resource - sets. - type: object - functionsWorker: - description: TLS configurations related to the Functions worker - component. - properties: - enabledWithBroker: - description: Enable TLS for the functions worker to broker - connections. - type: boolean + description: "Enable TLS." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - broker: - description: TLS configurations related to the Broker component. + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + zookeeper: + description: "TLS configurations related to the ZooKeeper\ + \ component." properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string enabled: - description: Enable TLS. - type: boolean - type: object - proxy: - description: TLS configurations related to the Proxy component. - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - bookkeeper: - description: TLS configurations related to the BookKeeper - component. - properties: + description: "Enable TLS." + type: "boolean" secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - type: object - clusterName: - description: Corresponds to the 'clusterName' field in the broker.conf. Defaults - to the value of the 'name' field - type: string - restartOnConfigMapChange: - description: | - By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. - type: boolean - image: - description: Default Pulsar image to use. Any components can be - configured to use a different image. - type: string - auth: - description: | - Authentication and authorization configuration. - properties: - token: - description: Token based authentication configuration. - properties: - privateKeyFile: - description: Private key file name stored in the Secret. - Default is 'my-private.key' - type: string - initialize: - description: Initialize Secrets with new pair of keys - and tokens for the super user roles. The generated Secret - name is 'token-'. - type: boolean - superUserRoles: - description: Super user roles. - items: - type: string - type: array - proxyRoles: - description: Proxy roles. - items: - type: string - type: array - publicKeyFile: - description: Public key file name stored in the Secret. - Default is 'my-public.key' - type: string - type: object - enabled: - description: Enable authentication in the cluster. Default - is 'false'. - type: boolean - type: object - persistence: - description: | - If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir - type: boolean - racks: - additionalProperties: - properties: - host: - description: Enable rack rules based on the hostname of - the node. - properties: - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - zone: - description: Enable rack rules based on the failure domain - (availability zone) of the node. - properties: - enableHostAntiAffinity: - description: "Enable the host anti affinity. If set,\ - \ all the pods of the same rack will deployed on different\ - \ nodes of the same zone.Default is true." - type: boolean - requireRackHostAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced for the host. Default is true.\ - \ If required, the affinity rule will be enforced\ - \ using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - type: object - description: Racks configuration. - type: object - resourceSets: - additionalProperties: - properties: - rack: - description: "Place this resource set to a specific rack,\ - \ defined at .global.racks." - type: string - type: object - description: Resource sets. - type: object - nodeSelectors: - additionalProperties: - type: string - description: "Global node selector. If set, this will apply to\ - \ all the components." - type: object - antiAffinity: - description: Pod anti affinity configuration. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + type: "object" zookeeperPlainSslStorePassword: description: "Use plain password in zookeeper server and client\ \ configuration. Default is false. Old versions of Apache Zookeeper\ \ (<3.8.0) does not support getting password from file. In that\ \ case, set this to true." - type: boolean - imagePullPolicy: - description: Default Pulsar image pull policy to use. Any components - can be configured to use a different image pull policy. Default - value is 'IfNotPresent'. - type: string + type: "boolean" required: - - name - type: object + - "name" + type: "object" proxy: properties: - sets: - additionalProperties: - properties: - webSocket: - description: WebSocket configuration. + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: properties: - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - probes: - description: Liveness and readiness probes configuration. + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the pod" + items: + properties: + awsElasticBlockStore: properties: - liveness: - description: Liveness probe configuration. + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: properties: - periodSeconds: - description: Indicates the period (in seconds) - for the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in - seconds) for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace - period (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: properties: - periodSeconds: - description: Indicates the period (in seconds) - for the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in - seconds) for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace - period (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - resources: - description: Resources requirements. + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - enabled: - description: Enable WebSocket standalone as container - in the proxy pod. - type: boolean - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - standaloneFunctionsWorker: - description: Whether or not the functions worker is in standalone - mode. - type: boolean - service: - description: Service configuration. - properties: - loadBalancerClass: - description: Assign a load balancer class. - type: string - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - loadBalancerIP: - description: Assign a load balancer IP. - type: string - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - enablePlainTextWithTLS: - description: Enable plain text connections even if TLS - is enabled. - type: boolean - type: object - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - updateStrategy: - description: Strategy for the proxy deployment. - properties: - rollingUpdate: + defaultMode: + type: "integer" + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - maxSurge: + medium: + type: "string" + sizeLimit: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the - operator. - type: string - kafka: - description: Enable Kafka protocol. - properties: - exposePorts: - description: Expose the kafka protocol port. - type: boolean - enabled: - description: Allow the cluster to accept Kafka protocol. - Default is 'false'. - type: boolean - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except - pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: + type: "object" + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: + properties: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: + properties: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: + properties: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: properties: - tcpSocket: + clusterTrustBundle: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: properties: - command: + items: items: - type: string - type: array - type: object - httpGet: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + items: items: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + items: items: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + items: properties: + key: + type: "string" + mode: + type: "integer" path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + configMapKeyRef: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - command: - items: - type: string - type: array - type: object - httpGet: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + containerName: + type: "string" + divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + resource: + type: "string" + type: "object" + secretKeyRef: properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: properties: - limits: - additionalProperties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: + type: "object" + type: "object" + preStop: + properties: + exec: properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the - pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + kafka: + description: "Enable Kafka protocol." + properties: + enabled: + description: "Allow the cluster to accept Kafka protocol.\ + \ Default is 'false'." + type: "boolean" + exposePorts: + description: "Expose the kafka protocol port." + type: "boolean" + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + enablePlainTextWithTLS: + description: "Enable plain text connections even if TLS is\ + \ enabled." + type: "boolean" + loadBalancerClass: + description: "Assign a load balancer class." + type: "string" + loadBalancerIP: + description: "Assign a load balancer IP." + type: "string" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sets: + additionalProperties: + properties: + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the\ + \ pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: additionalProperties: - type: string - type: object - ownerReferences: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string + type: "string" + type: "array" + generateName: + type: "string" generation: - type: integer - name: - type: string + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" managedFields: items: properties: - time: - type: string apiVersion: - type: string - fieldsV1: - type: object + type: "string" fieldsType: - type: string + type: "string" + fieldsV1: + type: "object" manager: - type: string + type: "string" operation: - type: string + type: "string" subresource: - type: string - type: object - type: array + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" namespace: - type: string - type: object + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" spec: properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string + accessModes: + items: + type: "string" + type: "array" dataSource: properties: - name: - type: string + apiGroup: + type: "string" kind: - type: string + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: apiGroup: - type: string - type: object + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" resources: properties: limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: + type: "object" + type: "object" + selector: properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" volumeMode: - type: string + type: "string" volumeName: - type: string - type: object - type: object - type: object - scaleIO: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object + type: "string" + lun: + type: "integer" readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: + type: "boolean" + targetWWNs: items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string + driver: + type: "string" fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" readOnly: - type: boolean + type: "boolean" secretRef: properties: name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object + type: "string" + type: "object" + type: "object" flocker: properties: - datasetUUID: - type: string datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: properties: - pdID: - type: string fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean + type: "string" partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: properties: + endpoints: + type: "string" + path: + type: "string" readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: + type: "boolean" + type: "object" + hostPath: properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object + path: + type: "string" + type: + type: "string" + type: "object" iscsi: properties: - readOnly: - type: boolean + chapAuthDiscovery: + type: "boolean" chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" iscsiInterface: - type: string + type: "string" + lun: + type: "integer" portals: items: - type: string - type: array - initiatorName: - type: string + type: "string" + type: "array" + readOnly: + type: "boolean" secretRef: properties: name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: properties: + path: + type: "string" readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: properties: + claimName: + type: "string" readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: + type: "boolean" + type: "object" + photonPersistentDisk: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" projected: properties: defaultMode: - type: integer + type: "integer" sources: items: properties: - secret: + clusterTrustBundle: properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" configMap: properties: - optional: - type: boolean items: items: properties: - path: - type: string key: - type: string + type: "string" mode: - type: integer - type: object - type: array + type: "integer" + path: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object + type: "string" + optional: + type: "boolean" + type: "object" downwardAPI: properties: items: items: properties: - path: - type: string fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: properties: + group: + type: "string" readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: properties: - path: - type: string + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" readOnly: - type: boolean + type: "boolean" secretRef: properties: name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string + type: "string" + type: "object" user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: + type: "string" + type: "object" + scaleIO: properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: items: - type: string - type: array + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except\ + \ pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override\ + \ the global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for\ + \ the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true env: - description: Additional container env variables. + description: "Additional container env variables." items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object - type: object + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object + type: "string" + type: "object" + type: "array" initContainers: - description: Init containers + description: "Init containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer exec: properties: command: items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: properties: - matchFields: + command: items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: items: properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override - the global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for - the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for - the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID,\ - \ GID, and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - description: Proxy sets. - type: object - setsUpdateStrategy: - description: Sets update strategy. 'RollingUpdate' or 'Parallel'. - Default is 'RollingUpdate'. - type: string - webSocket: - description: WebSocket configuration. - properties: - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for - the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for - the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - enabled: - description: Enable WebSocket standalone as container in the - proxy pod. - type: boolean - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - standaloneFunctionsWorker: - description: Whether or not the functions worker is in standalone - mode. - type: boolean - service: - description: Service configuration. - properties: - loadBalancerClass: - description: Assign a load balancer class. - type: string - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - loadBalancerIP: - description: Assign a load balancer IP. - type: string - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - enablePlainTextWithTLS: - description: Enable plain text connections even if TLS is - enabled. - type: boolean - type: object - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - updateStrategy: - description: Strategy for the proxy deployment. - properties: - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - maxSurge: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the operator. - type: string - kafka: - description: Enable Kafka protocol. - properties: - exposePorts: - description: Expose the kafka protocol port. - type: boolean - enabled: - description: Allow the cluster to accept Kafka protocol. Default - is 'false'. - type: boolean - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: properties: - host: - type: string - port: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + type: "object" + requests: + additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - configMapKeyRef: + exec: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - containerName: - type: string - divisor: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + kafka: + description: "Enable Kafka protocol." properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + enabled: + description: "Allow the cluster to accept Kafka protocol.\ + \ Default is 'false'." + type: "boolean" + exposePorts: + description: "Expose the kafka protocol port." + type: "boolean" + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: properties: - add: - items: - type: string - type: array - drop: + nodeSelectorTerms: items: - type: string - type: array - type: object - seLinuxOptions: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the\ + \ operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" resources: + description: "Resources requirements." properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + enablePlainTextWithTLS: + description: "Enable plain text connections even if\ + \ TLS is enabled." + type: "boolean" + loadBalancerClass: + description: "Assign a load balancer class." + type: "string" + loadBalancerIP: + description: "Assign a load balancer IP." + type: "string" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: properties: name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: + type: "string" + value: + type: "string" + valueFrom: properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: + configMapKeyRef: properties: + key: + type: "string" name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: - items: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: - items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: properties: + devicePath: + type: "string" name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: + type: "string" + type: "object" + type: "array" + volumeMounts: items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: properties: + mountPath: + type: "string" + mountPropagation: + type: "string" name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + standaloneFunctionsWorker: + description: "Whether or not the functions worker is in\ + \ standalone mode." + type: "boolean" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Strategy for the proxy deployment." + properties: + rollingUpdate: properties: - sizeLimit: + maxSurge: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: + maxUnavailable: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + type: "object" + type: + type: "string" + type: "object" + webSocket: + description: "WebSocket configuration." + properties: + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + enabled: + description: "Enable WebSocket standalone as container\ + \ in the proxy pod." + type: "boolean" + probes: + description: "Liveness and readiness probes configuration." properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in\ + \ seconds) for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace\ + \ period (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in\ + \ seconds) for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace\ + \ period (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + type: "object" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + type: "object" + description: "Proxy sets." + type: "object" + setsUpdateStrategy: + description: "Sets update strategy. 'RollingUpdate' or 'Parallel'.\ + \ Default is 'RollingUpdate'." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: + type: "integer" + type: "object" + name: + type: "string" + ports: items: properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + standaloneFunctionsWorker: + description: "Whether or not the functions worker is in standalone\ + \ mode." + type: "boolean" tolerations: - description: Pod tolerations. + description: "Pod tolerations." items: properties: + effect: + type: "string" key: - type: string + type: "string" operator: - type: string + type: "string" tolerationSeconds: - type: integer + type: "integer" value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Strategy for the proxy deployment." properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: + rollingUpdate: properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. + maxSurge: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: + type: "string" + type: "object" + webSocket: + description: "WebSocket configuration." properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + enabled: + description: "Enable WebSocket standalone as container in\ + \ the proxy pod." + type: "boolean" + probes: + description: "Liveness and readiness probes configuration." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for\ + \ the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for\ + \ the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for\ + \ the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for\ + \ the probe." + type: "integer" + type: "object" + type: "object" + resources: + description: "Resources requirements." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - type: object + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + type: "object" + type: "object" status: properties: - lastApplied: - description: Last spec applied. - type: string conditions: description: |- Conditions: 1. Condition Ready: possible status are True or False. If False, the reason contains the error message. items: properties: - status: - type: string - reason: - type: string lastTransitionTime: - type: string + type: "string" + message: + type: "string" observedGeneration: - type: integer + type: "integer" + reason: + type: "string" + status: + type: "string" type: - type: string - message: - type: string - type: object - type: array - type: object - type: object + type: "string" + type: "object" + type: "array" + lastApplied: + description: "Last spec applied." + type: "string" + type: "object" + type: "object" served: true storage: true subresources: diff --git a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml index 2fe134b7..69bc8450 100644 --- a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml @@ -1,20549 +1,21697 @@ # Generated by Fabric8 CRDGenerator, manual edits might get overwritten! -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" metadata: - name: pulsarclusters.kaap.oss.datastax.com + name: "pulsarclusters.kaap.oss.datastax.com" spec: - group: kaap.oss.datastax.com + group: "kaap.oss.datastax.com" names: - kind: PulsarCluster - plural: pulsarclusters + kind: "PulsarCluster" + plural: "pulsarclusters" shortNames: - - pulsar - singular: pulsarcluster - scope: Namespaced + - "pulsar" + singular: "pulsarcluster" + scope: "Namespaced" versions: - - name: v1beta1 + - name: "v1beta1" schema: openAPIV3Schema: properties: spec: properties: - global: + autorecovery: properties: - components: - description: Pulsar cluster components names. - properties: - brokerBaseName: - description: Broker base name. Default value is 'broker'. - type: string - zookeeperBaseName: - description: Zookeeper base name. Default value is 'zookeeper'. - type: string - functionsWorkerBaseName: - description: Functions Worker base name. Default value is - 'function'. - type: string - autorecoveryBaseName: - description: Autorecovery base name. Default value is 'autorecovery'. - type: string - bookkeeperBaseName: - description: BookKeeper base name. Default value is 'bookkeeper'. - type: string - bastionBaseName: - description: Bastion base name. Default value is 'bastion'. - type: string - proxyBaseName: - description: Proxy base name. Default value is 'proxy'. - type: string - type: object - dnsConfig: - description: | - Override default DNS config for each pod. Note that because we use fully qualified service names for intra - cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents - unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. - For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly - instead of appending the configured search domains. - More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. - properties: - nameservers: - items: - type: string - type: array - searches: - items: - type: string - type: array - options: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - type: object - dnsName: - description: Public dns name for the cluster's load balancer. - type: string - kubernetesClusterDomain: - description: | - The domain name for your kubernetes cluster. - This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . - It's used to fully qualify service names when configuring Pulsar. - The default value is 'cluster.local'. - type: string - priorityClassName: - description: Priority class name to attach to each pod. - type: string - name: - description: Name of the Pulsar cluster spec. This is used as - a prefix for managed Kubernetes resources. - type: string - storage: - description: Storage configuration. - properties: - storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - tls: - description: TLS configuration for the cluster. + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." properties: - ssCa: - description: "TLS configurations used by additional components,\ - \ such as the Bastion component." + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string enabled: - description: Enable TLS. - type: boolean - type: object - certProvisioner: - description: Certificate provisioner configuration. + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." properties: - selfSigned: - description: Self signed certificate provisioner configuration. + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: properties: - functionsWorker: - description: Functions worker self signed certificate - config. + name: + type: "string" + value: + type: "string" + valueFrom: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + configMapKeyRef: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - includeDns: - description: Include dns name in the DNS names covered - by the certificate. - type: boolean - privateKey: - description: Cert-manager options for generating the - private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - autorecovery: - description: Autorecovery self signed certificate - config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - bookkeeper: - description: Bookkeeper self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - proxy: - description: Proxy self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - zookeeper: - description: Zookeeper self signed certificate config. + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - broker: - description: Broker self signed certificate config. + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - perComponent: - description: Generate a different certificate for - each component. - type: boolean - enabled: - description: "Generate self signed certificates for\ - \ broker, proxy and functions worker." - type: boolean - caSecretName: - description: Secret where to store the root CA certificate. - type: string - external: - additionalProperties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + command: items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if - not specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - description: "External services self signed certificate\ - \ config (e.g., admin console, grafana). The key\ - \ is the service name, and the value contains generation\ - \ config" - type: object - type: object - type: object - autorecovery: - description: TLS configurations related to the Autorecovery - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxyResourceSets: - additionalProperties: - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Proxy resource - sets. - type: object - defaultSecretName: - description: Secret name used by each component to load TLS - certificates. Each component can load a different secret - by setting the 'secretName' entry in the tls component spec. - type: string - enabled: - description: Deprecated. Use the 'enabled' field in each component - spec instead. - type: boolean - caPath: - description: Path in the container filesystem where the TLS - CA certificates are retrieved. It has to point to a certificate - file. The default value is /etc/ssl/certs/ca-certificates.crt. - type: string - zookeeper: - description: TLS configurations related to the ZooKeeper component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - brokerResourceSets: - additionalProperties: - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Broker resource - sets. - type: object - functionsWorker: - description: TLS configurations related to the Functions worker - component. - properties: - enabledWithBroker: - description: Enable TLS for the functions worker to broker - connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - broker: - description: TLS configurations related to the Broker component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxy: - description: TLS configurations related to the Proxy component. - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - bookkeeper: - description: TLS configurations related to the BookKeeper - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - type: object - clusterName: - description: Corresponds to the 'clusterName' field in the broker.conf. Defaults - to the value of the 'name' field - type: string - restartOnConfigMapChange: - description: | - By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. - type: boolean - image: - description: Default Pulsar image to use. Any components can be - configured to use a different image. - type: string - auth: - description: | - Authentication and authorization configuration. - properties: - token: - description: Token based authentication configuration. - properties: - privateKeyFile: - description: Private key file name stored in the Secret. - Default is 'my-private.key' - type: string - initialize: - description: Initialize Secrets with new pair of keys - and tokens for the super user roles. The generated Secret - name is 'token-'. - type: boolean - superUserRoles: - description: Super user roles. - items: - type: string - type: array - proxyRoles: - description: Proxy roles. - items: - type: string - type: array - publicKeyFile: - description: Public key file name stored in the Secret. - Default is 'my-public.key' - type: string - type: object - enabled: - description: Enable authentication in the cluster. Default - is 'false'. - type: boolean - type: object - persistence: - description: | - If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir - type: boolean - racks: - additionalProperties: - properties: - host: - description: Enable rack rules based on the hostname of - the node. - properties: - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - zone: - description: Enable rack rules based on the failure domain - (availability zone) of the node. - properties: - enableHostAntiAffinity: - description: "Enable the host anti affinity. If set,\ - \ all the pods of the same rack will deployed on different\ - \ nodes of the same zone.Default is true." - type: boolean - requireRackHostAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced for the host. Default is true.\ - \ If required, the affinity rule will be enforced\ - \ using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - type: object - description: Racks configuration. - type: object - resourceSets: - additionalProperties: - properties: - rack: - description: "Place this resource set to a specific rack,\ - \ defined at .global.racks." - type: string - type: object - description: Resource sets. - type: object - nodeSelectors: - additionalProperties: - type: string - description: "Global node selector. If set, this will apply to\ - \ all the components." - type: object - antiAffinity: - description: Pod anti affinity configuration. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - zookeeperPlainSslStorePassword: - description: "Use plain password in zookeeper server and client\ - \ configuration. Default is false. Old versions of Apache Zookeeper\ - \ (<3.8.0) does not support getting password from file. In that\ - \ case, set this to true." - type: boolean - imagePullPolicy: - description: Default Pulsar image pull policy to use. Any components - can be configured to use a different image pull policy. Default - value is 'IfNotPresent'. - type: string - required: - - name - type: object - proxy: - properties: - sets: - additionalProperties: - properties: - webSocket: - description: WebSocket configuration. - properties: - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. + type: "string" + type: "array" + type: "object" + httpGet: properties: - periodSeconds: - description: Indicates the period (in seconds) - for the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in - seconds) for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace - period (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: properties: - periodSeconds: - description: Indicates the period (in seconds) - for the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in - seconds) for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace - period (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - resources: - description: Resources requirements. + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - enabled: - description: Enable WebSocket standalone as container - in the proxy pod. - type: boolean - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - standaloneFunctionsWorker: - description: Whether or not the functions worker is in standalone - mode. - type: boolean - service: - description: Service configuration. - properties: - loadBalancerClass: - description: Assign a load balancer class. - type: string - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - loadBalancerIP: - description: Assign a load balancer IP. - type: string - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - enablePlainTextWithTLS: - description: Enable plain text connections even if TLS - is enabled. - type: boolean - type: object - probes: - description: Liveness and readiness probes configuration. + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: properties: - liveness: - description: Liveness probe configuration. + exec: properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - updateStrategy: - description: Strategy for the proxy deployment. - properties: - rollingUpdate: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - maxSurge: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - resources: - description: Resources requirements. - properties: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the - operator. - type: string - kafka: - description: Enable Kafka protocol. + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: properties: - exposePorts: - description: Expose the kafka protocol port. - type: boolean - enabled: - description: Allow the cluster to accept Kafka protocol. - Default is 'false'. - type: boolean - type: object - imagePullSecrets: - description: Image pull secrets. + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: + devicePath: + type: "string" name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except - pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers + type: "string" + type: "object" + type: "array" + volumeMounts: items: properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: properties: - command: + key: + type: "string" + operator: + type: "string" + values: items: - type: string - type: array - type: object - httpGet: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: properties: - command: + key: + type: "string" + operator: + type: "string" + values: items: - type: string - type: array - type: object - httpGet: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + key: + type: "string" + operator: + type: "string" + values: items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + configMapKeyRef: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - command: - items: - type: string - type: array - type: object - httpGet: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + containerName: + type: "string" + divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: + scheme: + type: "string" + type: "object" + sleep: properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: properties: - volumes: - description: Additional volumes to be mounted to the - pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + type: "object" + bastion: + properties: + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: properties: + key: + type: "string" + name: + type: "string" optional: - type: boolean - secretName: - type: string - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: + type: "boolean" + type: "object" + fieldRef: properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: properties: - readOnly: - type: boolean - secretRef: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: properties: name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - optional: - type: boolean - key: - type: string name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - optional: - type: boolean - key: - type: string name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: properties: - lifecycle: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + key: + type: "string" + operator: + type: "string" + values: items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: properties: - command: + key: + type: "string" + operator: + type: "string" + values: items: - type: string - type: array - type: object - httpGet: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + key: + type: "string" + operator: + type: "string" + values: items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + configMapKeyRef: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - command: - items: - type: string - type: array - type: object - httpGet: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + containerName: + type: "string" + divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: + scheme: + type: "string" + type: "object" + sleep: properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: items: properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: + exec: properties: - nodeSelectorTerms: + command: items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override - the global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for - the StorageClass. + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for - the StorageClass. + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - type: object + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: - description: "Subset of PodSecurityContext for basic UID,\ - \ GID, and volume access control." properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" runAsGroup: - type: integer + type: "integer" runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array + type: "boolean" runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - description: Proxy sets. - type: object - setsUpdateStrategy: - description: Sets update strategy. 'RollingUpdate' or 'Parallel'. - Default is 'RollingUpdate'. - type: string - webSocket: - description: WebSocket configuration. - properties: - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for - the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for - the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - enabled: - description: Enable WebSocket standalone as container in the - proxy pod. - type: boolean - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - standaloneFunctionsWorker: - description: Whether or not the functions worker is in standalone - mode. - type: boolean - service: - description: Service configuration. - properties: - loadBalancerClass: - description: Assign a load balancer class. - type: string - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - loadBalancerIP: - description: Assign a load balancer IP. - type: string - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - enablePlainTextWithTLS: - description: Enable plain text connections even if TLS is - enabled. - type: boolean - type: object - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - updateStrategy: - description: Strategy for the proxy deployment. - properties: - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - maxSurge: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the operator. - type: string - kafka: - description: Enable Kafka protocol. - properties: - exposePorts: - description: Expose the kafka protocol port. - type: boolean - enabled: - description: Allow the cluster to accept Kafka protocol. Default - is 'false'. - type: boolean - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: + type: "integer" + seLinuxOptions: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" terminationMessagePath: - type: string - env: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object + devicePath: + type: "string" name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array + type: "string" + type: "object" + type: "array" volumeMounts: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string mountPath: - type: string + type: "string" mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + targetProxy: + description: "Indicates to connect to proxy or the broker. The\ + \ default value depends whether Proxy is deployed or not." + type: "boolean" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + type: "object" + bookkeeper: + properties: additionalVolumes: - description: Mount additional volumes to the pod. + description: "Mount additional volumes to the pod." properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" volumes: - description: Additional volumes to be mounted to the pod + description: "Additional volumes to be mounted to the pod" items: properties: - hostPath: + awsElasticBlockStore: properties: - path: - type: string - type: - type: string - type: object - flexVolume: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" secretRef: properties: name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: properties: + fsType: + type: "string" readOnly: - type: boolean - pdName: - type: string - partition: - type: integer + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" fsType: - type: string - type: object + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" ephemeral: properties: volumeClaimTemplate: properties: metadata: properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string annotations: additionalProperties: - type: string - type: object - selfLink: - type: string + type: "string" + type: "object" creationTimestamp: - type: string + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" finalizers: items: - type: string - type: array + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" labels: additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string + type: "string" + type: "object" managedFields: items: properties: - time: - type: string apiVersion: - type: string - fieldsV1: - type: object + type: "string" fieldsType: - type: string + type: "string" + fieldsV1: + type: "object" manager: - type: string + type: "string" operation: - type: string + type: "string" subresource: - type: string - type: object - type: array + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" dataSource: properties: - name: - type: string + apiGroup: + type: "string" kind: - type: string + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: apiGroup: - type: string - type: object + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" resources: properties: limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: + type: "object" + type: "object" + selector: properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" volumeMode: - type: string + type: "string" volumeName: - type: string - type: object - type: object - type: object - scaleIO: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object + type: "string" + lun: + type: "integer" readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: + type: "boolean" + targetWWNs: items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string + driver: + type: "string" fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" readOnly: - type: boolean + type: "boolean" secretRef: properties: name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object + type: "string" + type: "object" + type: "object" flocker: properties: - datasetUUID: - type: string datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: properties: - pdID: - type: string fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean + type: "string" partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: properties: + endpoints: + type: "string" + path: + type: "string" readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: + type: "boolean" + type: "object" + hostPath: properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object + path: + type: "string" + type: + type: "string" + type: "object" iscsi: properties: - readOnly: - type: boolean + chapAuthDiscovery: + type: "boolean" chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" iscsiInterface: - type: string + type: "string" + lun: + type: "integer" portals: items: - type: string - type: array - initiatorName: - type: string + type: "string" + type: "array" + readOnly: + type: "boolean" secretRef: properties: name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: properties: + path: + type: "string" readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: properties: + claimName: + type: "string" readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: + type: "boolean" + type: "object" + photonPersistentDisk: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" projected: properties: defaultMode: - type: integer + type: "integer" sources: items: properties: - secret: + clusterTrustBundle: properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" configMap: properties: - optional: - type: boolean items: items: properties: - path: - type: string key: - type: string + type: "string" mode: - type: integer - type: object - type: array + type: "integer" + path: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object + type: "string" + optional: + type: "boolean" + type: "object" downwardAPI: properties: items: items: properties: - path: - type: string fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: properties: + group: + type: "string" readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: properties: - path: - type: string + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" readOnly: - type: boolean + type: "boolean" secretRef: properties: name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string + type: "string" + type: "object" user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: + type: "string" + type: "object" + scaleIO: properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: items: - type: string - type: array + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + autoRackConfig: + description: "Configuration for the rack auto configuration." + properties: + additionalZookeeperClientConfig: + description: "Additional configuration for the zookeeper client." + x-kubernetes-preserve-unknown-fields: true + enabled: + description: "Enable rack configuration monitoring." + type: "boolean" + periodMs: + description: "Period for the schedule of the monitoring thread." + minimum: 1000.0 + type: "integer" + type: "object" + autoscaler: + description: "Autoscaling config." + properties: + diskUsageToleranceHwm: + description: "The threshold to trigger a scale up. The autoscaler\ + \ will scale up if any of thebookie's disk usage is higher\ + \ than or equal to this threshold. Default is '0.92'" + maximum: 1.0 + minimum: 0.0 + type: "number" + diskUsageToleranceLwm: + description: "The threshold to trigger a scale down. The autoscaler\ + \ will scale down if all the bookies' disk usage is lower\ + \ than this threshold. Default is '0.75'" + maximum: 1.0 + minimum: 0.0 + type: "number" + enabled: + description: "Enable autoscaling for bookies." + type: "boolean" + minWritableBookies: + description: "Min number of writable bookies. The autoscaler\ + \ will scale up if not enough writable bookies are detected.\ + \ For instance, if a bookie went to read-only mode, the\ + \ autoscaler will scale up to replace it. Default is '3'." + minimum: 1.0 + type: "integer" + periodMs: + description: "The interval in milliseconds between two consecutive\ + \ autoscaling checks." + minimum: 1000.0 + type: "integer" + scaleDownBy: + description: "The number of bookies to remove at each scale\ + \ down. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpBy: + description: "The number of bookies to add at each scale up.\ + \ Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpMaxLimit: + description: "Max number of bookies. If the number of bookies\ + \ is equals to this value, the autoscaler will never scale\ + \ up." + minimum: 1.0 + type: "integer" + stabilizationWindowMs: + description: "The stabilization window is used to restrict\ + \ the flapping of replica count when the metrics used for\ + \ scaling keep fluctuating. The autoscaling algorithm uses\ + \ this window to infer a previous desired state and avoid\ + \ unwanted changes to workload scale.Default value is 5\ + \ minutes after the pod readiness." + minimum: 1.0 + type: "integer" + type: "object" + cleanUpPvcs: + description: "Cleanup PVCs after the bookie has been removed." + type: "boolean" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true env: - description: Additional container env variables. + description: "Additional container env variables." items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object - type: object + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object + type: "string" + type: "object" + type: "array" initContainers: - description: Init containers + description: "Init containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: + type: "integer" + type: "object" + resizePolicy: items: properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" nodeAffinity: - description: Node affinity configuration. + description: "Node affinity configuration." properties: preferredDuringSchedulingIgnoredDuringExecution: items: properties: - weight: - type: integer preference: properties: - matchFields: + matchExpressions: items: properties: key: - type: string + type: "string" + operator: + type: "string" values: items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: properties: key: - type: string + type: "string" + operator: + type: "string" values: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: items: properties: - matchFields: + matchExpressions: items: properties: key: - type: string + type: "string" + operator: + type: "string" values: items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: properties: key: - type: string + type: "string" + operator: + type: "string" values: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" nodeSelectors: additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - zookeeper: - properties: - updateStrategy: - description: Update strategy for the StatefulSet. Default value - is rolling update. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - metadataInitializationJob: - description: Configuration about the job that initializes the - Pulsar cluster creating the needed ZooKeeper nodes. - properties: - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - timeout: - description: Timeout (in seconds) for the metadata initialization - execution. Default value is 60. - type: integer - type: object + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy. Default value is 'Parallel'." + type: "string" probes: - description: Liveness probe configuration. + description: "Liveness and readiness probes configuration." properties: liveness: - description: Liveness probe configuration. + description: "Liveness probe configuration." properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer + enabled: + description: "Enables the probe." + type: "boolean" failureThreshold: - description: Failure threshold. - type: integer + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" successThreshold: - description: Success threshold. - type: integer + description: "Success threshold." + type: "integer" terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" readiness: - description: Readiness probe configuration. + description: "Readiness probe configuration." properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer + enabled: + description: "Enables the probe." + type: "boolean" failureThreshold: - description: Failure threshold. - type: integer + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" successThreshold: - description: Success threshold. - type: integer + description: "Success threshold." + type: "integer" terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - podManagementPolicy: - description: Pod management policy. Default value is 'Parallel'. - type: string - service: - description: Service configuration. + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + type: "object" + pvcPrefix: + description: "Prefix for each PVC created." + type: "string" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." properties: - additionalPorts: - description: Additional ports to add to the Service. + claims: items: properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: object - resources: - description: Resources requirements. - properties: + type: "string" + type: "object" + type: "array" limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - dataVolume: - description: Volume configuration for ZooKeeper data. + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." properties: - storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the volume. - The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. Default - value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sets: additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: properties: - lifecycle: + additionalVolumes: + description: "Mount additional volumes to the pod." properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the\ + \ pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: properties: - value: - type: string name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: properties: - value: - type: string name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + defaultMode: + type: "integer" + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: + properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except\ + \ pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override\ + \ the global value if set." properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: + host: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for\ + \ the StorageClass." properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the pod - items: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + type: "object" + autoscaler: + description: "Autoscaling config." properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: + diskUsageToleranceHwm: + description: "The threshold to trigger a scale up. The\ + \ autoscaler will scale up if any of thebookie's disk\ + \ usage is higher than or equal to this threshold.\ + \ Default is '0.92'" + maximum: 1.0 + minimum: 0.0 + type: "number" + diskUsageToleranceLwm: + description: "The threshold to trigger a scale down.\ + \ The autoscaler will scale down if all the bookies'\ + \ disk usage is lower than this threshold. Default\ + \ is '0.75'" + maximum: 1.0 + minimum: 0.0 + type: "number" + enabled: + description: "Enable autoscaling for bookies." + type: "boolean" + minWritableBookies: + description: "Min number of writable bookies. The autoscaler\ + \ will scale up if not enough writable bookies are\ + \ detected. For instance, if a bookie went to read-only\ + \ mode, the autoscaler will scale up to replace it.\ + \ Default is '3'." + minimum: 1.0 + type: "integer" + periodMs: + description: "The interval in milliseconds between two\ + \ consecutive autoscaling checks." + minimum: 1000.0 + type: "integer" + scaleDownBy: + description: "The number of bookies to remove at each\ + \ scale down. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpBy: + description: "The number of bookies to add at each scale\ + \ up. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpMaxLimit: + description: "Max number of bookies. If the number of\ + \ bookies is equals to this value, the autoscaler\ + \ will never scale up." + minimum: 1.0 + type: "integer" + stabilizationWindowMs: + description: "The stabilization window is used to restrict\ + \ the flapping of replica count when the metrics used\ + \ for scaling keep fluctuating. The autoscaling algorithm\ + \ uses this window to infer a previous desired state\ + \ and avoid unwanted changes to workload scale.Default\ + \ value is 5 minutes after the pod readiness." + minimum: 1.0 + type: "integer" + type: "object" + cleanUpPvcs: + description: "Cleanup PVCs after the bookie has been removed." + type: "boolean" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: properties: name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: + type: "string" + value: + type: "string" + valueFrom: properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: + configMapKeyRef: properties: + key: + type: "string" name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: properties: + key: + type: "string" name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: - items: - items: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: properties: - path: - type: string - fieldRef: + exec: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: properties: - containerName: - type: string - divisor: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: properties: - secret: + exec: properties: - optional: - type: boolean - items: + command: items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: + type: "string" + type: "array" + type: "object" + httpGet: properties: - optional: - type: boolean - items: + host: + type: "string" + httpHeaders: items: properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: properties: - host: - type: string - port: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + type: "object" + requests: + additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: properties: - configMapKeyRef: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: properties: - add: - items: - type: string - type: array - drop: + nodeSelectorTerms: items: - type: string - type: array - type: object - seLinuxOptions: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the\ + \ operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy. Default value is 'Parallel'." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + type: "object" + pvcPrefix: + description: "Prefix for each PVC created." + type: "string" + replicas: + description: "Number of desired replicas." + type: "integer" resources: + description: "Resources requirements." properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." properties: - weight: - type: integer - preference: - properties: - matchFields: - items: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: properties: - key: - type: string - values: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - key: - type: string - values: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - key: - type: string - values: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - key: - type: string - values: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - autorecovery: - properties: - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Update strategy for the StatefulSet. Default\ + \ value is rolling update." + properties: + rollingUpdate: + properties: + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + volumes: + description: "Volumes configuration." + properties: + journal: + description: "Config for the journal volume." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage\ + \ class should be used." + type: "string" + name: + description: "Indicates the suffix for the volume.\ + \ Default value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the\ + \ volume. The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used.\ + \ The operator will create the StorageClass if\ + \ needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the\ + \ StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter\ + \ for the StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property\ + \ for the StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter\ + \ for the StorageClass." + type: "string" + type: "object" + type: "object" + ledgers: + description: "Config for the ledgers volume." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage\ + \ class should be used." + type: "string" + name: + description: "Indicates the suffix for the volume.\ + \ Default value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the\ + \ volume. The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used.\ + \ The operator will create the StorageClass if\ + \ needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the\ + \ StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter\ + \ for the StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property\ + \ for the StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter\ + \ for the StorageClass." + type: "string" + type: "object" + type: "object" + type: "object" + type: "object" + description: "Bookie sets." + type: "object" + setsUpdateStrategy: + description: "Sets update strategy. 'RollingUpdate' or 'Parallel'.\ + \ Default is 'RollingUpdate'." + type: "string" + sidecars: + description: "Sidecar containers" + items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array - env: - description: Additional container env variables. + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." items: properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Update strategy for the StatefulSet. Default value\ + \ is rolling update." + properties: + rollingUpdate: + properties: + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + volumes: + description: "Volumes configuration." + properties: + journal: + description: "Config for the journal volume." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage\ + \ class should be used." + type: "string" + name: + description: "Indicates the suffix for the volume. Default\ + \ value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the volume.\ + \ The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The\ + \ operator will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for\ + \ the StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for\ + \ the StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the\ + \ StorageClass." + type: "string" + type: "object" + type: "object" + ledgers: + description: "Config for the ledgers volume." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage\ + \ class should be used." + type: "string" + name: + description: "Indicates the suffix for the volume. Default\ + \ value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the volume.\ + \ The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The\ + \ operator will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for\ + \ the StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for\ + \ the StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the\ + \ StorageClass." + type: "string" + type: "object" + type: "object" + type: "object" + type: "object" + broker: + properties: + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the pod" + items: + properties: + awsElasticBlockStore: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: - lifecycle: - properties: - postStart: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + defaultMode: + type: "integer" + items: items: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: properties: - command: - items: - type: string - type: array - type: object - httpGet: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + defaultMode: + type: "integer" + items: items: properties: - value: - type: string - name: - type: string - type: object - type: array - port: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + type: "object" + ephemeral: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - command: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: items: - type: string - type: array - type: object - httpGet: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: + properties: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: + properties: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: properties: + endpoints: + type: "string" path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: properties: - add: - items: - type: string - type: array - drop: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: items: - type: string - type: array - type: object - seLinuxOptions: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: items: properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: properties: - matchFields: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: items: properties: key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: additionalProperties: - type: string - description: Additional node selectors. - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." properties: host: - description: Indicates the reclaimPolicy property for the - StorageClass. + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" zone: - description: Indicates the provisioner property for the StorageClass. + description: "Indicates the provisioner property for the StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + autoscaler: + description: "Autoscaling config." properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - bastion: - properties: + enabled: + description: "Enable autoscaling for brokers." + type: "boolean" + higherCpuThreshold: + description: "The threshold to trigger a scale up. The autoscaler\ + \ will scale up if all the brokers cpu usage is higher than\ + \ this threshold. Default is '0.8'" + maximum: 1.0 + minimum: 0.0 + type: "number" + lowerCpuThreshold: + description: "The threshold to trigger a scale down. The autoscaler\ + \ will scale down if all the brokers cpu usage is lower\ + \ than this threshold. Default is '0.4'" + maximum: 1.0 + minimum: 0.0 + type: "number" + max: + description: "Max number of brokers. If the number of brokers\ + \ is equals to this value, the autoscaler will never scale\ + \ up." + type: "integer" + min: + description: "Min number of brokers. If the number of brokers\ + \ is equals to this value, the autoscaler will never scale\ + \ down." + minimum: 1.0 + type: "integer" + periodMs: + description: "The interval in milliseconds between two consecutive\ + \ autoscaling checks." + minimum: 1000.0 + type: "integer" + resourcesUsageSource: + description: "Source for getting the brokers resources usage.\ + \ Possible values are 'PulsarLBReport' and 'K8SMetrics'.\ + \ Default is 'PulsarLBReport'" + type: "string" + scaleDownBy: + description: "The number of brokers to remove at each scale\ + \ down. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpBy: + description: "The number of brokers to add at each scale up.\ + \ Default is '1'" + minimum: 1.0 + type: "integer" + stabilizationWindowMs: + description: "The stabilization window is used to restrict\ + \ the flapping of replica count when the metrics used for\ + \ scaling keep fluctuating. The autoscaling algorithm uses\ + \ this window to infer a previous desired state and avoid\ + \ unwanted changes to workload scale.Default value is 5\ + \ minutes after the pod readiness." + minimum: 1.0 + type: "integer" + type: "object" config: - description: Configuration. + description: "Configuration." x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - imagePullSecrets: - description: Image pull secrets. + env: + description: "Additional container env variables." items: properties: name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: + type: "string" + value: + type: "string" + valueFrom: properties: - postStart: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + functionsWorkerEnabled: + description: "Enable functions worker embedded in the broker." + type: "boolean" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" terminationMessagePath: - type: string - env: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer + devicePath: + type: "string" name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array + type: "string" + type: "object" + type: "array" volumeMounts: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string mountPath: - type: string + type: "string" mountPropagation: - type: string - subPath: - type: string + type: "string" name: - type: string - type: object - type: array - securityContext: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + kafka: + description: "Enable Kafka protocol." + properties: + enabled: + description: "Allow the cluster to accept Kafka protocol.\ + \ Default is 'false'." + type: "boolean" + exposePorts: + description: "Expose the kafka protocol port." + type: "boolean" + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: + preference: properties: - add: + matchExpressions: items: - type: string - type: array - drop: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: - lifecycle: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + useHealthCheckForLiveness: + description: "Use healthcheck for the liveness probe. If false,\ + \ the /metrics endpoint will be used." + type: "boolean" + useHealthCheckForReadiness: + description: "Use healthcheck for the readiness probe. If\ + \ false, the /metrics endpoint will be used." + type: "boolean" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sets: + additionalProperties: + properties: + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the\ + \ pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: properties: - value: - type: string name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: properties: - value: - type: string name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: properties: - value: - type: string + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: + type: "string" optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + type: "boolean" + type: "object" + csi: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: properties: - containerName: - type: string - divisor: + defaultMode: + type: "integer" + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "object" + ephemeral: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - key: - type: string - values: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: + type: "string" + type: "array" + wwids: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: + type: "string" + type: "array" + type: "object" + flexVolume: properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: properties: - key: - type: string - values: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - targetProxy: - description: Indicates to connect to proxy or the broker. The - default value depends whether Proxy is deployed or not. - type: boolean - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - functionsWorker: - properties: - updateStrategy: - description: Update strategy for the StatefulSet. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - service: - description: Service configuration. - properties: - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - type: object - rbac: - description: RBAC config. - properties: - namespaced: - description: Whether or not the RBAC is created per-namespace - or cluster-wise. - type: boolean - create: - description: Create needed RBAC to run the Functions Worker. - type: boolean - type: object - podManagementPolicy: - description: Pod management policy. - type: string - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - runtime: - description: Runtime mode for functions. - type: string - logsVolume: - description: Volume configuration for export function logs. - properties: - storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the volume. - The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. Default - value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: properties: - value: - type: string name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: + properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except\ + \ pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override\ + \ the global value if set." properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + host: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." properties: - command: - items: - type: string - type: array - type: object - httpGet: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for\ + \ the StorageClass." properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + type: "object" + autoscaler: + description: "Autoscaling config." + properties: + enabled: + description: "Enable autoscaling for brokers." + type: "boolean" + higherCpuThreshold: + description: "The threshold to trigger a scale up. The\ + \ autoscaler will scale up if all the brokers cpu\ + \ usage is higher than this threshold. Default is\ + \ '0.8'" + maximum: 1.0 + minimum: 0.0 + type: "number" + lowerCpuThreshold: + description: "The threshold to trigger a scale down.\ + \ The autoscaler will scale down if all the brokers\ + \ cpu usage is lower than this threshold. Default\ + \ is '0.4'" + maximum: 1.0 + minimum: 0.0 + type: "number" + max: + description: "Max number of brokers. If the number of\ + \ brokers is equals to this value, the autoscaler\ + \ will never scale up." + type: "integer" + min: + description: "Min number of brokers. If the number of\ + \ brokers is equals to this value, the autoscaler\ + \ will never scale down." + minimum: 1.0 + type: "integer" + periodMs: + description: "The interval in milliseconds between two\ + \ consecutive autoscaling checks." + minimum: 1000.0 + type: "integer" + resourcesUsageSource: + description: "Source for getting the brokers resources\ + \ usage. Possible values are 'PulsarLBReport' and\ + \ 'K8SMetrics'. Default is 'PulsarLBReport'" + type: "string" + scaleDownBy: + description: "The number of brokers to remove at each\ + \ scale down. Default is '1'" + minimum: 1.0 + type: "integer" + scaleUpBy: + description: "The number of brokers to add at each scale\ + \ up. Default is '1'" + minimum: 1.0 + type: "integer" + stabilizationWindowMs: + description: "The stabilization window is used to restrict\ + \ the flapping of replica count when the metrics used\ + \ for scaling keep fluctuating. The autoscaling algorithm\ + \ uses this window to infer a previous desired state\ + \ and avoid unwanted changes to workload scale.Default\ + \ value is 5 minutes after the pod readiness." + minimum: 1.0 + type: "integer" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true env: + description: "Additional container env variables." items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object - type: object + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + functionsWorkerEnabled: + description: "Enable functions worker embedded in the broker." + type: "boolean" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" items: properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: properties: name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: + type: "string" + value: + type: "string" + valueFrom: properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: + configMapKeyRef: properties: + key: + type: "string" name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: properties: + key: + type: "string" name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: items: - items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: + exec: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: properties: - containerName: - type: string - divisor: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: properties: - secret: + exec: properties: - optional: - type: boolean - items: + command: items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: + type: "string" + type: "array" + type: "object" + httpGet: properties: - optional: - type: boolean - items: + host: + type: "string" + httpHeaders: items: properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: properties: - host: - type: string - port: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + type: "object" + requests: + additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + kafka: + description: "Enable Kafka protocol." properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + enabled: + description: "Allow the cluster to accept Kafka protocol.\ + \ Default is 'false'." + type: "boolean" + exposePorts: + description: "Expose the kafka protocol port." + type: "boolean" + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + nodeSelectorTerms: items: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the\ + \ operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + useHealthCheckForLiveness: + description: "Use healthcheck for the liveness probe.\ + \ If false, the /metrics endpoint will be used." + type: "boolean" + useHealthCheckForReadiness: + description: "Use healthcheck for the readiness probe.\ + \ If false, the /metrics endpoint will be used." + type: "boolean" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" runAsGroup: - type: integer + type: "integer" runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean + type: "boolean" runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - broker: - properties: - sets: - additionalProperties: - properties: - updateStrategy: - description: Update strategy for the StatefulSet. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - probes: - description: Liveness and readiness probes configuration. - properties: - useHealthCheckForReadiness: - description: "Use healthcheck for the readiness probe.\ - \ If false, the /metrics endpoint will be used." - type: boolean - useHealthCheckForLiveness: - description: "Use healthcheck for the liveness probe.\ - \ If false, the /metrics endpoint will be used." - type: boolean - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - functionsWorkerEnabled: - description: Enable functions worker embedded in the broker. - type: boolean - transactions: - description: Enable transactions in the broker. - properties: - initJob: - description: Config for the init job. - properties: - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - partitions: - description: Number of coordinators to create. - type: integer - enabled: - description: Initialize the transaction coordinator - if it's not yet and configure the broker to accept - transactions. - type: boolean - type: object + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" service: - description: Service configuration. + description: "Service configuration." properties: additionalPorts: - description: Additional ports to add to the Service. + description: "Additional ports to add to the Service." items: properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" targetPort: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array + type: "object" + type: "array" annotations: additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object + type: "string" + description: "Additional annotations to add to the Service." + type: "object" type: - description: Service type. Default value is 'ClusterIP' - type: string - type: object - autoscaler: - description: Autoscaling config. - properties: - periodMs: - description: The interval in milliseconds between two - consecutive autoscaling checks. - minimum: 1000.0 - type: integer - resourcesUsageSource: - description: Source for getting the brokers resources - usage. Possible values are 'PulsarLBReport' and 'K8SMetrics'. - Default is 'PulsarLBReport' - type: string - max: - description: "Max number of brokers. If the number of\ - \ brokers is equals to this value, the autoscaler\ - \ will never scale up." - type: integer - higherCpuThreshold: - description: The threshold to trigger a scale up. The - autoscaler will scale up if all the brokers cpu usage - is higher than this threshold. Default is '0.8' - maximum: 1.0 - minimum: 0.0 - type: number - enabled: - description: Enable autoscaling for brokers. - type: boolean - min: - description: "Min number of brokers. If the number of\ - \ brokers is equals to this value, the autoscaler\ - \ will never scale down." - minimum: 1.0 - type: integer - scaleUpBy: - description: The number of brokers to add at each scale - up. Default is '1' - minimum: 1.0 - type: integer - stabilizationWindowMs: - description: The stabilization window is used to restrict - the flapping of replica count when the metrics used - for scaling keep fluctuating. The autoscaling algorithm - uses this window to infer a previous desired state - and avoid unwanted changes to workload scale.Default - value is 5 minutes after the pod readiness. - minimum: 1.0 - type: integer - lowerCpuThreshold: - description: The threshold to trigger a scale down. - The autoscaler will scale down if all the brokers - cpu usage is lower than this threshold. Default is - '0.4' - maximum: 1.0 - minimum: 0.0 - type: number - scaleDownBy: - description: The number of brokers to remove at each - scale down. Default is '1' - minimum: 1.0 - type: integer - type: object - podManagementPolicy: - description: Pod management policy. - type: string - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the - operator. - type: string - kafka: - description: Enable Kafka protocol. - properties: - exposePorts: - description: Expose the kafka protocol port. - type: boolean - enabled: - description: Allow the cluster to accept Kafka protocol. - Default is 'false'. - type: boolean - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except - pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" sidecars: - description: Sidecar containers + description: "Sidecar containers" items: properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + transactions: + description: "Enable transactions in the broker." properties: - volumes: - description: Additional volumes to be mounted to the - pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: + enabled: + description: "Initialize the transaction coordinator\ + \ if it's not yet and configure the broker to accept\ + \ transactions." + type: "boolean" + initJob: + description: "Config for the init job." + properties: + resources: + description: "Resources requirements." + properties: + claims: + items: properties: name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + partitions: + description: "Number of coordinators to create." + type: "integer" + type: "object" + updateStrategy: + description: "Update strategy for the StatefulSet." + properties: + rollingUpdate: + properties: + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + type: "object" + description: "Broker sets." + type: "object" + setsUpdateStrategy: + description: "Sets update strategy. 'RollingUpdate' or 'Parallel'.\ + \ Default is 'RollingUpdate'." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: properties: + key: + type: "string" + name: + type: "string" optional: - type: boolean + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: properties: name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: properties: - value: - type: string - valueFrom: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - optional: - type: boolean - key: - type: string name: - type: string - type: object - type: object + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers + type: "string" + type: "object" + type: "array" + volumeMounts: items: properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + transactions: + description: "Enable transactions in the broker." + properties: + enabled: + description: "Initialize the transaction coordinator if it's\ + \ not yet and configure the broker to accept transactions." + type: "boolean" + initJob: + description: "Config for the init job." + properties: + resources: + description: "Resources requirements." + properties: + claims: items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + partitions: + description: "Number of coordinators to create." + type: "integer" + type: "object" + updateStrategy: + description: "Update strategy for the StatefulSet." + properties: + rollingUpdate: + properties: + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + type: "object" + functionsWorker: + properties: + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: properties: + key: + type: "string" + mode: + type: "integer" path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object name: - type: string - type: object - type: array - tty: - type: boolean - args: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + items: properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: properties: - prefix: - type: string - configMapRef: + metadata: properties: - optional: - type: boolean + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - secretRef: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: + accessModes: + items: + type: "string" + type: "array" + dataSource: properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: properties: - key: - type: string - values: + matchExpressions: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override - the global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for - the StorageClass. + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for - the StorageClass. + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID,\ - \ GID, and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - description: Broker sets. - type: object - setsUpdateStrategy: - description: Sets update strategy. 'RollingUpdate' or 'Parallel'. - Default is 'RollingUpdate'. - type: string - updateStrategy: - description: Update strategy for the StatefulSet. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - probes: - description: Liveness and readiness probes configuration. - properties: - useHealthCheckForReadiness: - description: "Use healthcheck for the readiness probe. If\ - \ false, the /metrics endpoint will be used." - type: boolean - useHealthCheckForLiveness: - description: "Use healthcheck for the liveness probe. If false,\ - \ the /metrics endpoint will be used." - type: boolean - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - functionsWorkerEnabled: - description: Enable functions worker embedded in the broker. - type: boolean - transactions: - description: Enable transactions in the broker. - properties: - initJob: - description: Config for the init job. - properties: - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - partitions: - description: Number of coordinators to create. - type: integer - enabled: - description: Initialize the transaction coordinator if it's - not yet and configure the broker to accept transactions. - type: boolean - type: object - service: - description: Service configuration. - properties: - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: - description: Service type. Default value is 'ClusterIP' - type: string - type: object - autoscaler: - description: Autoscaling config. - properties: - periodMs: - description: The interval in milliseconds between two consecutive - autoscaling checks. - minimum: 1000.0 - type: integer - resourcesUsageSource: - description: Source for getting the brokers resources usage. - Possible values are 'PulsarLBReport' and 'K8SMetrics'. Default - is 'PulsarLBReport' - type: string - max: - description: "Max number of brokers. If the number of brokers\ - \ is equals to this value, the autoscaler will never scale\ - \ up." - type: integer - higherCpuThreshold: - description: The threshold to trigger a scale up. The autoscaler - will scale up if all the brokers cpu usage is higher than - this threshold. Default is '0.8' - maximum: 1.0 - minimum: 0.0 - type: number - enabled: - description: Enable autoscaling for brokers. - type: boolean - min: - description: "Min number of brokers. If the number of brokers\ - \ is equals to this value, the autoscaler will never scale\ - \ down." - minimum: 1.0 - type: integer - scaleUpBy: - description: The number of brokers to add at each scale up. - Default is '1' - minimum: 1.0 - type: integer - stabilizationWindowMs: - description: The stabilization window is used to restrict - the flapping of replica count when the metrics used for - scaling keep fluctuating. The autoscaling algorithm uses - this window to infer a previous desired state and avoid - unwanted changes to workload scale.Default value is 5 minutes - after the pod readiness. - minimum: 1.0 - type: integer - lowerCpuThreshold: - description: The threshold to trigger a scale down. The autoscaler - will scale down if all the brokers cpu usage is lower than - this threshold. Default is '0.4' - maximum: 1.0 - minimum: 0.0 - type: number - scaleDownBy: - description: The number of brokers to remove at each scale - down. Default is '1' - minimum: 1.0 - type: integer - type: object - podManagementPolicy: - description: Pod management policy. - type: string - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the operator. - type: string - kafka: - description: Enable Kafka protocol. - properties: - exposePorts: - description: Expose the kafka protocol port. - type: boolean - enabled: - description: Allow the cluster to accept Kafka protocol. Default - is 'false'. - type: boolean - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: + name: + type: "string" + type: "object" + type: "object" + flocker: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: properties: - command: - items: - type: string - type: array - type: object - httpGet: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: properties: path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + type: "string" + type: + type: "string" + type: "object" + iscsi: properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: properties: - command: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: items: - type: string - type: array - type: object - httpGet: + properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: items: properties: - value: - type: string - name: - type: string - type: object - type: array - port: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" env: items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: items: - type: string - type: array - startupProbe: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + postStart: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" ports: items: properties: containerPort: - type: integer + type: "integer" + hostIP: + type: "string" hostPort: - type: integer + type: "integer" name: - type: string + type: "string" protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + logsVolume: + description: "Volume configuration for export function logs." properties: - volumes: - description: Additional volumes to be mounted to the pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" + name: + description: "Indicates the suffix for the volume. Default\ + \ value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the volume.\ + \ The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: properties: - optional: - type: boolean - secretName: - type: string - items: + matchExpressions: items: properties: - path: - type: string key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: properties: - path: - type: string key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: - items: + matchExpressions: items: properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy." + type: "string" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + type: "object" + rbac: + description: "RBAC config." + properties: + create: + description: "Create needed RBAC to run the Functions Worker." + type: "boolean" + namespaced: + description: "Whether or not the RBAC is created per-namespace\ + \ or cluster-wise." + type: "boolean" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + runtime: + description: "Runtime mode for functions." + type: "string" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: - value: - type: string - valueFrom: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + postStart: properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers - items: - properties: - lifecycle: - properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" stdinOnce: - type: boolean - ports: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: items: properties: - containerPort: - type: integer - hostPort: - type: integer + devicePath: + type: "string" name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: - properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array + type: "string" + type: "object" + type: "array" volumeMounts: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string mountPath: - type: string + type: "string" mountPropagation: - type: string - subPath: - type: string + type: "string" name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" tolerations: - description: Pod tolerations. + description: "Pod tolerations." items: properties: + effect: + type: "string" key: - type: string + type: "string" operator: - type: string + type: "string" tolerationSeconds: - type: integer + type: "integer" value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Update strategy for the StatefulSet." properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: + rollingUpdate: properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + type: "object" + global: + properties: antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. + description: "Pod anti affinity configuration." properties: host: - description: Indicates the reclaimPolicy property for the - StorageClass. + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" zone: - description: Indicates the provisioner property for the StorageClass. + description: "Indicates the provisioner property for the StorageClass." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + auth: + description: | + Authentication and authorization configuration. properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: + enabled: + description: "Enable authentication in the cluster. Default\ + \ is 'false'." + type: "boolean" + token: + description: "Token based authentication configuration." + properties: + initialize: + description: "Initialize Secrets with new pair of keys\ + \ and tokens for the super user roles. The generated\ + \ Secret name is 'token-'." + type: "boolean" + privateKeyFile: + description: "Private key file name stored in the Secret.\ + \ Default is 'my-private.key'" + type: "string" + proxyRoles: + description: "Proxy roles." + items: + type: "string" + type: "array" + publicKeyFile: + description: "Public key file name stored in the Secret.\ + \ Default is 'my-public.key'" + type: "string" + superUserRoles: + description: "Super user roles." + items: + type: "string" + type: "array" + type: "object" + type: "object" + clusterName: + description: "Corresponds to the 'clusterName' field in the broker.conf.\ + \ Defaults to the value of the 'name' field" + type: "string" + components: + description: "Pulsar cluster components names." + properties: + autorecoveryBaseName: + description: "Autorecovery base name. Default value is 'autorecovery'." + type: "string" + bastionBaseName: + description: "Bastion base name. Default value is 'bastion'." + type: "string" + bookkeeperBaseName: + description: "BookKeeper base name. Default value is 'bookkeeper'." + type: "string" + brokerBaseName: + description: "Broker base name. Default value is 'broker'." + type: "string" + functionsWorkerBaseName: + description: "Functions Worker base name. Default value is\ + \ 'function'." + type: "string" + proxyBaseName: + description: "Proxy base name. Default value is 'proxy'." + type: "string" + zookeeperBaseName: + description: "Zookeeper base name. Default value is 'zookeeper'." + type: "string" + type: "object" + dnsConfig: + description: | + Override default DNS config for each pod. Note that because we use fully qualified service names for intra + cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents + unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. + For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly + instead of appending the configured search domains. + More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + properties: + nameservers: items: - type: integer - type: array - runAsUser: - type: integer - type: object + type: "string" + type: "array" + options: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + searches: + items: + type: "string" + type: "array" + type: "object" + dnsName: + description: "Public dns name for the cluster's load balancer." + type: "string" + image: + description: "Default Pulsar image to use. Any components can\ + \ be configured to use a different image." + type: "string" imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: + description: "Default Pulsar image pull policy to use. Any components\ + \ can be configured to use a different image pull policy. Default\ + \ value is 'IfNotPresent'." + type: "string" + kubernetesClusterDomain: + description: | + The domain name for your kubernetes cluster. + This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . + It's used to fully qualify service names when configuring Pulsar. + The default value is 'cluster.local'. + type: "string" + name: + description: "Name of the Pulsar cluster spec. This is used as\ + \ a prefix for managed Kubernetes resources." + type: "string" + nodeSelectors: additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - bookkeeper: - properties: - autoRackConfig: - description: Configuration for the rack auto configuration. - properties: - periodMs: - description: Period for the schedule of the monitoring thread. - minimum: 1000.0 - type: integer - additionalZookeeperClientConfig: - description: Additional configuration for the zookeeper client. - x-kubernetes-preserve-unknown-fields: true - enabled: - description: Enable rack configuration monitoring. - type: boolean - type: object - sets: + type: "string" + description: "Global node selector. If set, this will apply to\ + \ all the components." + type: "object" + persistence: + description: | + If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir + type: "boolean" + priorityClassName: + description: "Priority class name to attach to each pod." + type: "string" + racks: additionalProperties: properties: - cleanUpPvcs: - description: Cleanup PVCs after the bookie has been removed. - type: boolean - updateStrategy: - description: Update strategy for the StatefulSet. Default - value is rolling update. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for - the probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period - (in seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) - for the probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - service: - description: Service configuration. + host: + description: "Enable rack rules based on the hostname of\ + \ the node." properties: - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: object - podManagementPolicy: - description: Pod management policy. Default value is 'Parallel'. - type: string - autoscaler: - description: Autoscaling config. + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + zone: + description: "Enable rack rules based on the failure domain\ + \ (availability zone) of the node." properties: - periodMs: - description: The interval in milliseconds between two - consecutive autoscaling checks. - minimum: 1000.0 - type: integer - diskUsageToleranceLwm: - description: The threshold to trigger a scale down. - The autoscaler will scale down if all the bookies' - disk usage is lower than this threshold. Default is - '0.75' - maximum: 1.0 - minimum: 0.0 - type: number - scaleUpMaxLimit: - description: "Max number of bookies. If the number of\ - \ bookies is equals to this value, the autoscaler\ - \ will never scale up." - minimum: 1.0 - type: integer - diskUsageToleranceHwm: - description: The threshold to trigger a scale up. The - autoscaler will scale up if any of thebookie's disk - usage is higher than or equal to this threshold. Default - is '0.92' - maximum: 1.0 - minimum: 0.0 - type: number + enableHostAntiAffinity: + description: "Enable the host anti affinity. If set,\ + \ all the pods of the same rack will deployed on different\ + \ nodes of the same zone.Default is true." + type: "boolean" enabled: - description: Enable autoscaling for bookies. - type: boolean - minWritableBookies: - description: "Min number of writable bookies. The autoscaler\ - \ will scale up if not enough writable bookies are\ - \ detected. For instance, if a bookie went to read-only\ - \ mode, the autoscaler will scale up to replace it.\ - \ Default is '3'." - minimum: 1.0 - type: integer - scaleUpBy: - description: The number of bookies to add at each scale - up. Default is '1' - minimum: 1.0 - type: integer - stabilizationWindowMs: - description: The stabilization window is used to restrict - the flapping of replica count when the metrics used - for scaling keep fluctuating. The autoscaling algorithm - uses this window to infer a previous desired state - and avoid unwanted changes to workload scale.Default - value is 5 minutes after the pod readiness. - minimum: 1.0 - type: integer - scaleDownBy: - description: The number of bookies to remove at each - scale down. Default is '1' - minimum: 1.0 - type: integer - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the - operator. - type: string - pvcPrefix: - description: Prefix for each PVC created. - type: string - volumes: - description: Volumes configuration. + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackHostAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced for the host. Default is true.\ + \ If required, the affinity rule will be enforced\ + \ using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + type: "object" + description: "Racks configuration." + type: "object" + resourceSets: + additionalProperties: + properties: + rack: + description: "Place this resource set to a specific rack,\ + \ defined at .global.racks." + type: "string" + type: "object" + description: "Resource sets." + type: "object" + restartOnConfigMapChange: + description: | + By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. + type: "boolean" + storage: + description: "Storage configuration." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" + tls: + description: "TLS configuration for the cluster." + properties: + autorecovery: + description: "TLS configurations related to the Autorecovery\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + bookkeeper: + description: "TLS configurations related to the BookKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + broker: + description: "TLS configurations related to the Broker component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + brokerResourceSets: + additionalProperties: properties: - journal: - description: Config for the journal volume. - properties: - storageClass: - description: Indicates if a StorageClass is used. - The operator will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property - for the StorageClass. - type: string - type: - description: Indicates the 'type' parameter - for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter - for the StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the - volume. The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. - Default value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage - class should be used. - type: string - type: object - ledgers: - description: Config for the ledgers volume. - properties: - storageClass: - description: Indicates if a StorageClass is used. - The operator will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property - for the StorageClass. - type: string - type: - description: Indicates the 'type' parameter - for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter - for the StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the - volume. The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. - Default value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage - class should be used. - type: string - type: object - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except - pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Broker resource\ + \ sets." + type: "object" + caPath: + description: "Path in the container filesystem where the TLS\ + \ CA certificates are retrieved. It has to point to a certificate\ + \ file. The default value is /etc/ssl/certs/ca-certificates.crt." + type: "string" + certProvisioner: + description: "Certificate provisioner configuration." + properties: + selfSigned: + description: "Self signed certificate provisioner configuration." properties: - lifecycle: + autorecovery: + description: "Autorecovery self signed certificate\ + \ config." properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + bookkeeper: + description: "Bookkeeper self signed certificate config." properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + broker: + description: "Broker self signed certificate config." properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + caSecretName: + description: "Secret where to store the root CA certificate." + type: "string" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: properties: - value: - type: string - valueFrom: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension along\ + \ with the default K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + functionsWorker: + description: "Functions worker self signed certificate\ + \ config." properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + includeDns: + description: "Include dns name in the DNS names covered\ + \ by the certificate." + type: "boolean" + perComponent: + description: "Generate a different certificate for\ + \ each component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + zookeeper: + description: "Zookeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - command: - items: - type: string - type: array - type: object - httpGet: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" + type: "object" + defaultSecretName: + description: "Secret name used by each component to load TLS\ + \ certificates. Each component can load a different secret\ + \ by setting the 'secretName' entry in the tls component\ + \ spec." + type: "string" + enabled: + description: "Deprecated. Use the 'enabled' field in each\ + \ component spec instead." + type: "boolean" + functionsWorker: + description: "TLS configurations related to the Functions\ + \ worker component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the functions worker to broker\ + \ connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxy: + description: "TLS configurations related to the Proxy component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxyResourceSets: + additionalProperties: + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Proxy resource\ + \ sets." + type: "object" + ssCa: + description: "TLS configurations used by additional components,\ + \ such as the Bastion component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + zookeeper: + description: "TLS configurations related to the ZooKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + type: "object" + zookeeperPlainSslStorePassword: + description: "Use plain password in zookeeper server and client\ + \ configuration. Default is false. Old versions of Apache Zookeeper\ + \ (<3.8.0) does not support getting password from file. In that\ + \ case, set this to true." + type: "boolean" + required: + - "name" + type: "object" + proxy: + properties: + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: properties: + key: + type: "string" + mode: + type: "integer" path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: properties: - containerPort: - type: integer - hostPort: - type: integer name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: properties: - prefix: - type: string - configMapRef: + metadata: properties: - optional: - type: boolean + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - secretRef: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: + properties: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: + properties: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: + type: "string" + type: "object" + type: "object" + flocker: + properties: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: properties: - devicePath: - type: string name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the - pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: + clusterTrustBundle: properties: - name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: + labelSelector: properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: + matchExpressions: items: - type: string - type: array - labels: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: additionalProperties: - type: string - type: object - ownerReferences: - items: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: properties: - blockOwnerDeletion: - type: boolean - uid: - type: string apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: + containerName: + type: "string" + divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: - properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: + items: properties: + key: + type: "string" + mode: + type: "integer" path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: - properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: - properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: - properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: - properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: - properties: - defaultMode: - type: integer - sources: - items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: - properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: - properties: - path: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: - properties: - readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: - items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" env: - description: Additional container env variables. items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: items: properties: - lifecycle: + configMapRef: properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - command: - items: - type: string - type: array - type: object - httpGet: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - command: - items: - type: string - type: array - type: object - httpGet: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + kafka: + description: "Enable Kafka protocol." + properties: + enabled: + description: "Allow the cluster to accept Kafka protocol.\ + \ Default is 'false'." + type: "boolean" + exposePorts: + description: "Expose the kafka protocol port." + type: "boolean" + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + enablePlainTextWithTLS: + description: "Enable plain text connections even if TLS is\ + \ enabled." + type: "boolean" + loadBalancerClass: + description: "Assign a load balancer class." + type: "string" + loadBalancerIP: + description: "Assign a load balancer IP." + type: "string" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sets: + additionalProperties: + properties: + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the\ + \ pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: + properties: + metadata: + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: + properties: + accessModes: + items: + type: "string" + type: "array" + dataSource: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: + properties: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: + items: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: + properties: + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: + properties: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: + properties: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: + properties: + clusterTrustBundle: + properties: + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + name: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: + properties: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: + properties: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: + properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except\ + \ pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override\ + \ the global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for\ + \ the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property\ + \ for the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + kafka: + description: "Enable Kafka protocol." + properties: + enabled: + description: "Allow the cluster to accept Kafka protocol.\ + \ Default is 'false'." + type: "boolean" + exposePorts: + description: "Expose the kafka protocol port." + type: "boolean" + type: "object" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + overrideResourceName: + description: "Override the resource names generated by the\ + \ operator." + type: "string" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID,\ + \ GID, and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: + properties: + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + enablePlainTextWithTLS: + description: "Enable plain text connections even if\ + \ TLS is enabled." + type: "boolean" + loadBalancerClass: + description: "Assign a load balancer class." + type: "string" + loadBalancerIP: + description: "Assign a load balancer IP." + type: "string" + type: + description: "Service type. Default value is 'ClusterIP'" + type: "string" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean - key: - type: string + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: name: - type: string - type: object - type: object + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + standaloneFunctionsWorker: + description: "Whether or not the functions worker is in\ + \ standalone mode." + type: "boolean" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Strategy for the proxy deployment." + properties: + rollingUpdate: + properties: + maxSurge: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: + type: "string" + type: "object" + webSocket: + description: "WebSocket configuration." + properties: + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + enabled: + description: "Enable WebSocket standalone as container\ + \ in the proxy pod." + type: "boolean" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in\ + \ seconds) for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace\ + \ period (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in\ + \ seconds) for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds)\ + \ for the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace\ + \ period (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds)\ + \ for the probe." + type: "integer" + type: "object" + type: "object" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + type: "object" + description: "Proxy sets." + type: "object" + setsUpdateStrategy: + description: "Sets update strategy. 'RollingUpdate' or 'Parallel'.\ + \ Default is 'RollingUpdate'." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + standaloneFunctionsWorker: + description: "Whether or not the functions worker is in standalone\ + \ mode." + type: "boolean" + tolerations: + description: "Pod tolerations." + items: + properties: + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Strategy for the proxy deployment." + properties: + rollingUpdate: + properties: + maxSurge: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: + type: "string" + type: "object" + webSocket: + description: "WebSocket configuration." + properties: + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + enabled: + description: "Enable WebSocket standalone as container in\ + \ the proxy pod." + type: "boolean" + probes: + description: "Liveness and readiness probes configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for\ + \ the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for\ + \ the probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for\ + \ the probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period\ + \ (in seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for\ + \ the probe." + type: "integer" + type: "object" + type: "object" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + type: "object" + zookeeper: + properties: + additionalVolumes: + description: "Mount additional volumes to the pod." + properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + volumes: + description: "Additional volumes to be mounted to the pod" + items: + properties: + awsElasticBlockStore: + properties: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: + properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" + readOnly: + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" + secretRef: + properties: name: - type: string - type: object - type: array - tty: - type: boolean - args: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + items: properties: + key: + type: "string" + mode: + type: "integer" path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" + fsType: + type: "string" + nodePublishSecretRef: properties: - containerPort: - type: integer - hostPort: - type: integer name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + ephemeral: + properties: + volumeClaimTemplate: properties: - prefix: - type: string - configMapRef: + metadata: properties: - optional: - type: boolean + annotations: + additionalProperties: + type: "string" + type: "object" + creationTimestamp: + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" + finalizers: + items: + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" + labels: + additionalProperties: + type: "string" + type: "object" + managedFields: + items: + properties: + apiVersion: + type: "string" + fieldsType: + type: "string" + fieldsV1: + type: "object" + manager: + type: "string" + operation: + type: "string" + subresource: + type: "string" + time: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - secretRef: + type: "string" + namespace: + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" + spec: properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: + accessModes: + items: + type: "string" + type: "array" + dataSource: properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: + apiGroup: + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" + resources: + properties: + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + selector: properties: - key: - type: string - values: + matchExpressions: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" + volumeMode: + type: "string" + volumeName: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - nodeSelectorTerms: + fsType: + type: "string" + lun: + type: "integer" + readOnly: + type: "boolean" + targetWWNs: items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override - the global value if set. - properties: - host: - description: Indicates the reclaimPolicy property for - the StorageClass. + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for - the StorageClass. + driver: + type: "string" + fsType: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + type: "object" + flocker: properties: - required: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID,\ - \ GID, and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - description: Bookie sets. - type: object - setsUpdateStrategy: - description: Sets update strategy. 'RollingUpdate' or 'Parallel'. - Default is 'RollingUpdate'. - type: string - cleanUpPvcs: - description: Cleanup PVCs after the bookie has been removed. - type: boolean - updateStrategy: - description: Update strategy for the StatefulSet. Default value - is rolling update. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - probes: - description: Liveness and readiness probes configuration. - properties: - liveness: - description: Liveness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. - properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer - enabled: - description: Enables the probe. - type: boolean - type: object - type: object - service: - description: Service configuration. - properties: - additionalPorts: - description: Additional ports to add to the Service. - items: - properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer - name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: object - podManagementPolicy: - description: Pod management policy. Default value is 'Parallel'. - type: string - autoscaler: - description: Autoscaling config. - properties: - periodMs: - description: The interval in milliseconds between two consecutive - autoscaling checks. - minimum: 1000.0 - type: integer - diskUsageToleranceLwm: - description: The threshold to trigger a scale down. The autoscaler - will scale down if all the bookies' disk usage is lower - than this threshold. Default is '0.75' - maximum: 1.0 - minimum: 0.0 - type: number - scaleUpMaxLimit: - description: "Max number of bookies. If the number of bookies\ - \ is equals to this value, the autoscaler will never scale\ - \ up." - minimum: 1.0 - type: integer - diskUsageToleranceHwm: - description: The threshold to trigger a scale up. The autoscaler - will scale up if any of thebookie's disk usage is higher - than or equal to this threshold. Default is '0.92' - maximum: 1.0 - minimum: 0.0 - type: number - enabled: - description: Enable autoscaling for bookies. - type: boolean - minWritableBookies: - description: "Min number of writable bookies. The autoscaler\ - \ will scale up if not enough writable bookies are detected.\ - \ For instance, if a bookie went to read-only mode, the\ - \ autoscaler will scale up to replace it. Default is '3'." - minimum: 1.0 - type: integer - scaleUpBy: - description: The number of bookies to add at each scale up. - Default is '1' - minimum: 1.0 - type: integer - stabilizationWindowMs: - description: The stabilization window is used to restrict - the flapping of replica count when the metrics used for - scaling keep fluctuating. The autoscaling algorithm uses - this window to infer a previous desired state and avoid - unwanted changes to workload scale.Default value is 5 minutes - after the pod readiness. - minimum: 1.0 - type: integer - scaleDownBy: - description: The number of bookies to remove at each scale - down. Default is '1' - minimum: 1.0 - type: integer - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - overrideResourceName: - description: Override the resource names generated by the operator. - type: string - pvcPrefix: - description: Prefix for each PVC created. - type: string - volumes: - description: Volumes configuration. - properties: - journal: - description: Config for the journal volume. - properties: - storageClass: - description: Indicates if a StorageClass is used. The - operator will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for - the StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the - StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for - the StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the volume. - The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. Default - value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage - class should be used. - type: string - type: object - ledgers: - description: Config for the ledgers volume. - properties: - storageClass: - description: Indicates if a StorageClass is used. The - operator will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for - the StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the - StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for - the StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property - for the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the volume. - The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. Default - value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage - class should be used. - type: string - type: object - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: - properties: - postStart: + datasetName: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: + fsType: + type: "string" + partition: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: + properties: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: + properties: + endpoints: + type: "string" + path: + type: "string" + readOnly: + type: "boolean" + type: "object" + hostPath: + properties: + path: + type: "string" + type: + type: "string" + type: "object" + iscsi: + properties: + chapAuthDiscovery: + type: "boolean" + chapAuthSession: + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" + iscsiInterface: + type: "string" + lun: + type: "integer" + portals: + items: + type: "string" + type: "array" + readOnly: + type: "boolean" + secretRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + name: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: + properties: + path: + type: "string" + readOnly: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: + properties: + claimName: + type: "string" + readOnly: + type: "boolean" + type: "object" + photonPersistentDisk: + properties: + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + projected: + properties: + defaultMode: + type: "integer" + sources: + items: + properties: + clusterTrustBundle: properties: - value: - type: string + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" + configMap: properties: - value: - type: string + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + type: "string" + optional: + type: "boolean" + type: "object" + downwardAPI: + properties: + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + group: + type: "string" + readOnly: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: properties: - command: + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: items: - type: string - type: array - type: object - httpGet: + type: "string" + type: "array" + pool: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + user: + type: "string" + type: "object" + scaleIO: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: items: properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: + fsType: + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + dataVolume: + description: "Volume configuration for ZooKeeper data." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" + name: + description: "Indicates the suffix for the volume. Default\ + \ value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the volume.\ + \ The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" + env: + description: "Additional container env variables." + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: properties: - command: - items: - type: string - type: array - type: object - httpGet: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: + containerName: + type: "string" + divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: + name: + type: "string" + type: "object" + type: "array" + initContainers: + description: "Init containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" env: items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string + type: "string" name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" envFrom: items: properties: - prefix: - type: string configMapRef: properties: - optional: - type: boolean name: - type: string - type: object - secretRef: - properties: + type: "string" optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array - additionalVolumes: - description: Mount additional volumes to the pod. - properties: - volumes: - description: Additional volumes to be mounted to the pod - items: - properties: - hostPath: - properties: - path: - type: string - type: - type: string - type: object - flexVolume: - properties: - readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: - properties: - readOnly: - type: boolean - pdName: - type: string - partition: - type: integer - fsType: - type: string - type: object - ephemeral: - properties: - volumeClaimTemplate: - properties: - metadata: - properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string - annotations: - additionalProperties: - type: string - type: object - selfLink: - type: string - creationTimestamp: - type: string - finalizers: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string - managedFields: - items: - properties: - time: - type: string - apiVersion: - type: string - fieldsV1: - type: object - fieldsType: - type: string - manager: - type: string - operation: - type: string - subresource: - type: string - type: object - type: array - namespace: - type: string - type: object - spec: - properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - dataSource: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: - properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - scaleIO: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: + exec: properties: - name: - type: string - type: object - fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: properties: - nodePublishSecretRef: + exec: properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: + properties: + exec: properties: - optional: - type: boolean - secretName: - type: string - items: + command: items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: - properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string - fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object - flocker: - properties: - datasetUUID: - type: string - datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - pdID: - type: string - fsType: - type: string - type: object - persistentVolumeClaim: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: + exec: properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - readOnly: - type: boolean - partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - optional: - type: boolean - items: + host: + type: "string" + httpHeaders: items: properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: - properties: - readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object - iscsi: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: + properties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: properties: - readOnly: - type: boolean - chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string - iscsiInterface: - type: string - portals: - items: - type: string - type: array - initiatorName: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: properties: - readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: + add: items: - type: string - type: array - fsType: - type: string + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" user: - type: string - type: object - azureFile: + type: "string" + type: "object" + seccompProfile: properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - projected: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: properties: - defaultMode: - type: integer - sources: + command: items: - properties: - secret: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - configMap: - properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object - downwardAPI: - properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: properties: - readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: properties: - path: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - monitors: + host: + type: "string" + httpHeaders: items: - type: string - type: array - secretFile: - type: string - user: - type: string - type: object - emptyDir: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: properties: - sizeLimit: + host: + type: "string" + port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + metadataInitializationJob: + description: "Configuration about the job that initializes the\ + \ Pulsar cluster creating the needed ZooKeeper nodes." + properties: + resources: + description: "Resources requirements." + properties: + claims: + items: properties: - readOnly: - type: boolean - lun: - type: integer - wwids: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + timeout: + description: "Timeout (in seconds) for the metadata initialization\ + \ execution. Default value is 60." + type: "integer" + type: "object" + nodeAffinity: + description: "Node affinity configuration." + properties: + preferredDuringSchedulingIgnoredDuringExecution: + items: + properties: + preference: + properties: + matchExpressions: items: - type: string - type: array - targetWWNs: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: - type: string - type: array - fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" + requiredDuringSchedulingIgnoredDuringExecution: + properties: + nodeSelectorTerms: + items: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" + nodeSelectors: + additionalProperties: + type: "string" + description: "Additional node selectors." + type: "object" + pdb: + description: "Pod disruption budget configuration." + properties: + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy. Default value is 'Parallel'." + type: "string" + probes: + description: "Liveness probe configuration." + properties: + liveness: + description: "Liveness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." + properties: + enabled: + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: items: properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string name: - type: string - type: object - type: array - type: object - env: - description: Additional container env variables. - items: - properties: - value: - type: string - valueFrom: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + securityContext: + description: "Subset of PodSecurityContext for basic UID, GID,\ + \ and volume access control." + properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + supplementalGroups: + items: + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." + properties: + additionalPorts: + description: "Additional ports to add to the Service." + items: properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object - initContainers: - description: Init containers + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer exec: properties: command: items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. - properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" tolerations: - description: Pod tolerations. + description: "Pod tolerations." items: properties: + effect: + type: "string" key: - type: string + type: "string" operator: - type: string + type: "string" tolerationSeconds: - type: integer + type: "integer" value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer - nodeAffinity: - description: Node affinity configuration. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - weight: - type: integer - preference: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchFields: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object - nodeSelectors: - additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Update strategy for the StatefulSet. Default value\ + \ is rolling update." properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + rollingUpdate: properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - securityContext: - description: "Subset of PodSecurityContext for basic UID, GID,\ - \ and volume access control." - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer - supplementalGroups: - items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - type: object + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + type: "object" + type: "object" status: properties: - lastApplied: - description: Last spec applied. - type: string conditions: description: |- Conditions: 1. Condition Ready: possible status are True or False. If False, the reason contains the error message. items: properties: - status: - type: string - reason: - type: string lastTransitionTime: - type: string + type: "string" + message: + type: "string" observedGeneration: - type: integer + type: "integer" + reason: + type: "string" + status: + type: "string" type: - type: string - message: - type: string - type: object - type: array - type: object - type: object + type: "string" + type: "object" + type: "array" + lastApplied: + description: "Last spec applied." + type: "string" + type: "object" + type: "object" served: true storage: true subresources: diff --git a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml index dd2cb5df..5de8956f 100644 --- a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml @@ -1,2867 +1,2994 @@ # Generated by Fabric8 CRDGenerator, manual edits might get overwritten! -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition +apiVersion: "apiextensions.k8s.io/v1" +kind: "CustomResourceDefinition" metadata: - name: zookeepers.kaap.oss.datastax.com + name: "zookeepers.kaap.oss.datastax.com" spec: - group: kaap.oss.datastax.com + group: "kaap.oss.datastax.com" names: - kind: ZooKeeper - plural: zookeepers + kind: "ZooKeeper" + plural: "zookeepers" shortNames: - - zk - singular: zookeeper - scope: Namespaced + - "zk" + singular: "zookeeper" + scope: "Namespaced" versions: - - name: v1beta1 + - name: "v1beta1" schema: openAPIV3Schema: properties: spec: properties: - zookeeper: + global: properties: - updateStrategy: - description: Update strategy for the StatefulSet. Default value - is rolling update. - properties: - type: - type: string - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - partition: - type: integer - type: object - type: object - config: - description: Configuration. - x-kubernetes-preserve-unknown-fields: true - gracePeriod: - description: Termination grace period in seconds. - minimum: 0.0 - type: integer - metadataInitializationJob: - description: Configuration about the job that initializes the - Pulsar cluster creating the needed ZooKeeper nodes. - properties: - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - timeout: - description: Timeout (in seconds) for the metadata initialization - execution. Default value is 60. - type: integer - type: object - probes: - description: Liveness probe configuration. + antiAffinity: + description: "Pod anti affinity configuration." properties: - liveness: - description: Liveness probe configuration. + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer enabled: - description: Enables the probe. - type: boolean - type: object - readiness: - description: Readiness probe configuration. + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." properties: - periodSeconds: - description: Indicates the period (in seconds) for the - probe. - type: integer - initialDelaySeconds: - description: Indicates the initial delay (in seconds) - for the probe. - type: integer - failureThreshold: - description: Failure threshold. - type: integer - successThreshold: - description: Success threshold. - type: integer - terminationGracePeriodSeconds: - description: Indicates the termination grace period (in - seconds) for the probe. - type: integer - timeoutSeconds: - description: Indicates the timeout (in seconds) for the - probe. - type: integer enabled: - description: Enables the probe. - type: boolean - type: object - type: object - podManagementPolicy: - description: Pod management policy. Default value is 'Parallel'. - type: string - service: - description: Service configuration. + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + auth: + description: | + Authentication and authorization configuration. properties: - additionalPorts: - description: Additional ports to add to the Service. + enabled: + description: "Enable authentication in the cluster. Default\ + \ is 'false'." + type: "boolean" + token: + description: "Token based authentication configuration." + properties: + initialize: + description: "Initialize Secrets with new pair of keys\ + \ and tokens for the super user roles. The generated\ + \ Secret name is 'token-'." + type: "boolean" + privateKeyFile: + description: "Private key file name stored in the Secret.\ + \ Default is 'my-private.key'" + type: "string" + proxyRoles: + description: "Proxy roles." + items: + type: "string" + type: "array" + publicKeyFile: + description: "Public key file name stored in the Secret.\ + \ Default is 'my-public.key'" + type: "string" + superUserRoles: + description: "Super user roles." + items: + type: "string" + type: "array" + type: "object" + type: "object" + clusterName: + description: "Corresponds to the 'clusterName' field in the broker.conf.\ + \ Defaults to the value of the 'name' field" + type: "string" + components: + description: "Pulsar cluster components names." + properties: + autorecoveryBaseName: + description: "Autorecovery base name. Default value is 'autorecovery'." + type: "string" + bastionBaseName: + description: "Bastion base name. Default value is 'bastion'." + type: "string" + bookkeeperBaseName: + description: "BookKeeper base name. Default value is 'bookkeeper'." + type: "string" + brokerBaseName: + description: "Broker base name. Default value is 'broker'." + type: "string" + functionsWorkerBaseName: + description: "Functions Worker base name. Default value is\ + \ 'function'." + type: "string" + proxyBaseName: + description: "Proxy base name. Default value is 'proxy'." + type: "string" + zookeeperBaseName: + description: "Zookeeper base name. Default value is 'zookeeper'." + type: "string" + type: "object" + dnsConfig: + description: | + Override default DNS config for each pod. Note that because we use fully qualified service names for intra + cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents + unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. + For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly + instead of appending the configured search domains. + More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + properties: + nameservers: + items: + type: "string" + type: "array" + options: items: properties: - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - port: - type: integer - nodePort: - type: integer name: - type: string - appProtocol: - type: string - protocol: - type: string - type: object - type: array - annotations: - additionalProperties: - type: string - description: Additional annotations to add to the Service. - type: object - type: object - resources: - description: Resources requirements. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - dataVolume: - description: Volume configuration for ZooKeeper data. + type: "string" + value: + type: "string" + type: "object" + type: "array" + searches: + items: + type: "string" + type: "array" + type: "object" + dnsName: + description: "Public dns name for the cluster's load balancer." + type: "string" + image: + description: "Default Pulsar image to use. Any components can\ + \ be configured to use a different image." + type: "string" + imagePullPolicy: + description: "Default Pulsar image pull policy to use. Any components\ + \ can be configured to use a different image pull policy. Default\ + \ value is 'IfNotPresent'." + type: "string" + kubernetesClusterDomain: + description: | + The domain name for your kubernetes cluster. + This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . + It's used to fully qualify service names when configuring Pulsar. + The default value is 'cluster.local'. + type: "string" + name: + description: "Name of the Pulsar cluster spec. This is used as\ + \ a prefix for managed Kubernetes resources." + type: "string" + nodeSelectors: + additionalProperties: + type: "string" + description: "Global node selector. If set, this will apply to\ + \ all the components." + type: "object" + persistence: + description: | + If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir + type: "boolean" + priorityClassName: + description: "Priority class name to attach to each pod." + type: "string" + racks: + additionalProperties: + properties: + host: + description: "Enable rack rules based on the hostname of\ + \ the node." + properties: + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + zone: + description: "Enable rack rules based on the failure domain\ + \ (availability zone) of the node." + properties: + enableHostAntiAffinity: + description: "Enable the host anti affinity. If set,\ + \ all the pods of the same rack will deployed on different\ + \ nodes of the same zone.Default is true." + type: "boolean" + enabled: + description: "Enable the rack affinity rules." + type: "boolean" + requireRackAffinity: + description: "Indicates if the podAffinity rules will\ + \ be enforced. Default is false. If required, the\ + \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced. Default is true. If required,\ + \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + requireRackHostAntiAffinity: + description: "Indicates if the podAntiAffinity rules\ + \ will be enforced for the host. Default is true.\ + \ If required, the affinity rule will be enforced\ + \ using 'requiredDuringSchedulingIgnoredDuringExecution'." + type: "boolean" + type: "object" + type: "object" + description: "Racks configuration." + type: "object" + resourceSets: + additionalProperties: + properties: + rack: + description: "Place this resource set to a specific rack,\ + \ defined at .global.racks." + type: "string" + type: "object" + description: "Resource sets." + type: "object" + restartOnConfigMapChange: + description: | + By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. + type: "boolean" + storage: + description: "Storage configuration." properties: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." properties: extraParams: additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - size: - description: Indicates the requested size for the volume. - The format follows the Kubernetes' Quantity. - type: string - name: - description: Indicates the suffix for the volume. Default - value is 'data'. - type: string - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - imagePullSecrets: - description: Image pull secrets. - items: - properties: - name: - type: string - type: object - type: array - image: - description: Override Pulsar image. - type: string - annotations: - additionalProperties: - type: string - description: Annotations to add to each resource (except pods). - type: object - podAnnotations: - additionalProperties: - type: string - description: Annotations to add to pod. - type: object - sidecars: - description: Sidecar containers - items: - properties: - lifecycle: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" + tls: + description: "TLS configuration for the cluster." + properties: + autorecovery: + description: "TLS configurations related to the Autorecovery\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + bookkeeper: + description: "TLS configurations related to the BookKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + broker: + description: "TLS configurations related to the Broker component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + brokerResourceSets: + additionalProperties: properties: - postStart: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array - livenessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Broker resource\ + \ sets." + type: "object" + caPath: + description: "Path in the container filesystem where the TLS\ + \ CA certificates are retrieved. It has to point to a certificate\ + \ file. The default value is /etc/ssl/certs/ca-certificates.crt." + type: "string" + certProvisioner: + description: "Certificate provisioner configuration." + properties: + selfSigned: + description: "Self signed certificate provisioner configuration." properties: - value: - type: string - valueFrom: + autorecovery: + description: "Autorecovery self signed certificate\ + \ config." properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + bookkeeper: + description: "Bookkeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer - initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + caSecretName: + description: "Secret where to store the root CA certificate." + type: "string" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension along\ + \ with the default K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + functionsWorker: + description: "Functions worker self signed certificate\ + \ config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: - items: - properties: - prefix: - type: string - configMapRef: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + includeDns: + description: "Include dns name in the DNS names covered\ + \ by the certificate." + type: "boolean" + perComponent: + description: "Generate a different certificate for\ + \ each component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." properties: - optional: - type: boolean - name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - securityContext: - properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - seLinuxOptions: - properties: - role: - type: string - type: - type: string - user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string - seccompProfile: - properties: - type: - type: string - localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - type: object - type: array - type: object - type: array + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + zookeeper: + description: "Zookeeper self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension along with the default\ + \ K8s service DNS." + items: + type: "string" + type: "array" + generate: + description: "Generate self signed certificates\ + \ for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" + type: "object" + defaultSecretName: + description: "Secret name used by each component to load TLS\ + \ certificates. Each component can load a different secret\ + \ by setting the 'secretName' entry in the tls component\ + \ spec." + type: "string" + enabled: + description: "Deprecated. Use the 'enabled' field in each\ + \ component spec instead." + type: "boolean" + functionsWorker: + description: "TLS configurations related to the Functions\ + \ worker component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the functions worker to broker\ + \ connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxy: + description: "TLS configurations related to the Proxy component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + proxyResourceSets: + additionalProperties: + properties: + enabled: + description: "Enable TLS." + type: "boolean" + enabledWithBroker: + description: "Enable TLS for the proxy to broker connections." + type: "boolean" + secretName: + description: "Override the default secret name from\ + \ where to load the certificates." + type: "string" + type: "object" + description: "TLS configurations related to the Proxy resource\ + \ sets." + type: "object" + ssCa: + description: "TLS configurations used by additional components,\ + \ such as the Bastion component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + zookeeper: + description: "TLS configurations related to the ZooKeeper\ + \ component." + properties: + enabled: + description: "Enable TLS." + type: "boolean" + secretName: + description: "Override the default secret name from where\ + \ to load the certificates." + type: "string" + type: "object" + type: "object" + zookeeperPlainSslStorePassword: + description: "Use plain password in zookeeper server and client\ + \ configuration. Default is false. Old versions of Apache Zookeeper\ + \ (<3.8.0) does not support getting password from file. In that\ + \ case, set this to true." + type: "boolean" + required: + - "name" + type: "object" + zookeeper: + properties: additionalVolumes: - description: Mount additional volumes to the pod. + description: "Mount additional volumes to the pod." properties: + mounts: + description: "Mount points for the additional volumes" + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" volumes: - description: Additional volumes to be mounted to the pod + description: "Additional volumes to be mounted to the pod" items: properties: - hostPath: + awsElasticBlockStore: properties: - path: - type: string - type: - type: string - type: object - flexVolume: + fsType: + type: "string" + partition: + type: "integer" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" + azureDisk: properties: + cachingMode: + type: "string" + diskName: + type: "string" + diskURI: + type: "string" + fsType: + type: "string" + kind: + type: "string" readOnly: - type: boolean - options: - additionalProperties: - type: string - type: object + type: "boolean" + type: "object" + azureFile: + properties: + readOnly: + type: "boolean" + secretName: + type: "string" + shareName: + type: "string" + type: "object" + cephfs: + properties: + monitors: + items: + type: "string" + type: "array" + path: + type: "string" + readOnly: + type: "boolean" + secretFile: + type: "string" secretRef: properties: name: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - gcePersistentDisk: + type: "string" + type: "object" + user: + type: "string" + type: "object" + cinder: properties: + fsType: + type: "string" readOnly: - type: boolean - pdName: - type: string - partition: - type: integer + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeID: + type: "string" + type: "object" + configMap: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + csi: + properties: + driver: + type: "string" fsType: - type: string - type: object + type: "string" + nodePublishSecretRef: + properties: + name: + type: "string" + type: "object" + readOnly: + type: "boolean" + volumeAttributes: + additionalProperties: + type: "string" + type: "object" + type: "object" + downwardAPI: + properties: + defaultMode: + type: "integer" + items: + items: + properties: + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + emptyDir: + properties: + medium: + type: "string" + sizeLimit: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" ephemeral: properties: volumeClaimTemplate: properties: metadata: properties: - generateName: - type: string - deletionGracePeriodSeconds: - type: integer - deletionTimestamp: - type: string - resourceVersion: - type: string annotations: additionalProperties: - type: string - type: object - selfLink: - type: string + type: "string" + type: "object" creationTimestamp: - type: string + type: "string" + deletionGracePeriodSeconds: + type: "integer" + deletionTimestamp: + type: "string" finalizers: items: - type: string - type: array + type: "string" + type: "array" + generateName: + type: "string" + generation: + type: "integer" labels: additionalProperties: - type: string - type: object - ownerReferences: - items: - properties: - blockOwnerDeletion: - type: boolean - uid: - type: string - apiVersion: - type: string - name: - type: string - kind: - type: string - controller: - type: boolean - type: object - type: array - uid: - type: string - generation: - type: integer - name: - type: string + type: "string" + type: "object" managedFields: items: properties: - time: - type: string apiVersion: - type: string - fieldsV1: - type: object + type: "string" fieldsType: - type: string + type: "string" + fieldsV1: + type: "object" manager: - type: string + type: "string" operation: - type: string + type: "string" subresource: - type: string - type: object - type: array + type: "string" + time: + type: "string" + type: "object" + type: "array" + name: + type: "string" namespace: - type: string - type: object + type: "string" + ownerReferences: + items: + properties: + apiVersion: + type: "string" + blockOwnerDeletion: + type: "boolean" + controller: + type: "boolean" + kind: + type: "string" + name: + type: "string" + uid: + type: "string" + type: "object" + type: "array" + resourceVersion: + type: "string" + selfLink: + type: "string" + uid: + type: "string" + type: "object" spec: properties: - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - values: - items: - type: string - type: array - operator: - type: string - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string + accessModes: + items: + type: "string" + type: "array" dataSource: properties: - name: - type: string + apiGroup: + type: "string" kind: - type: string + type: "string" + name: + type: "string" + type: "object" + dataSourceRef: + properties: apiGroup: - type: string - type: object + type: "string" + kind: + type: "string" + name: + type: "string" + namespace: + type: "string" + type: "object" resources: properties: limits: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" requests: additionalProperties: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - dataSourceRef: + type: "object" + type: "object" + selector: properties: - name: - type: string - kind: - type: string - apiGroup: - type: string - type: object - accessModes: - items: - type: string - type: array + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" + storageClassName: + type: "string" + volumeAttributesClassName: + type: "string" volumeMode: - type: string + type: "string" volumeName: - type: string - type: object - type: object - type: object - scaleIO: + type: "string" + type: "object" + type: "object" + type: "object" + fc: properties: - readOnly: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - gateway: - type: string - secretRef: - properties: - name: - type: string - type: object fsType: - type: string - sslEnabled: - type: boolean - volumeName: - type: string - protectionDomain: - type: string - type: object - csi: - properties: - nodePublishSecretRef: - properties: - name: - type: string - type: object + type: "string" + lun: + type: "integer" readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - fsType: - type: string - driver: - type: string - type: object - secret: - properties: - optional: - type: boolean - secretName: - type: string - items: + type: "boolean" + targetWWNs: items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object - name: - type: string - vsphereVolume: + type: "string" + type: "array" + wwids: + items: + type: "string" + type: "array" + type: "object" + flexVolume: properties: - storagePolicyName: - type: string - storagePolicyID: - type: string - volumePath: - type: string + driver: + type: "string" fsType: - type: string - type: object - gitRepo: - properties: - revision: - type: string - repository: - type: string - directory: - type: string - type: object - glusterfs: - properties: - path: - type: string - readOnly: - type: boolean - endpoints: - type: string - type: object - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - type: object - cinder: - properties: + type: "string" + options: + additionalProperties: + type: "string" + type: "object" readOnly: - type: boolean + type: "boolean" secretRef: properties: name: - type: string - type: object - fsType: - type: string - volumeID: - type: string - type: object + type: "string" + type: "object" + type: "object" flocker: properties: - datasetUUID: - type: string datasetName: - type: string - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - volume: - type: string - user: - type: string - registry: - type: string - tenant: - type: string - type: object - photonPersistentDisk: + type: "string" + datasetUUID: + type: "string" + type: "object" + gcePersistentDisk: properties: - pdID: - type: string fsType: - type: string - type: object - persistentVolumeClaim: - properties: - readOnly: - type: boolean - claimName: - type: string - type: object - awsElasticBlockStore: - properties: - readOnly: - type: boolean + type: "string" partition: - type: integer - fsType: - type: string - volumeID: - type: string - type: object - configMap: + type: "integer" + pdName: + type: "string" + readOnly: + type: "boolean" + type: "object" + gitRepo: properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - name: - type: string - type: object - storageos: + directory: + type: "string" + repository: + type: "string" + revision: + type: "string" + type: "object" + glusterfs: properties: + endpoints: + type: "string" + path: + type: "string" readOnly: - type: boolean - volumeNamespace: - type: string - secretRef: - properties: - name: - type: string - type: object - fsType: - type: string - volumeName: - type: string - type: object - portworxVolume: + type: "boolean" + type: "object" + hostPath: properties: - readOnly: - type: boolean - fsType: - type: string - volumeID: - type: string - type: object + path: + type: "string" + type: + type: "string" + type: "object" iscsi: properties: - readOnly: - type: boolean + chapAuthDiscovery: + type: "boolean" chapAuthSession: - type: boolean - lun: - type: integer - targetPortal: - type: string + type: "boolean" + fsType: + type: "string" + initiatorName: + type: "string" + iqn: + type: "string" iscsiInterface: - type: string + type: "string" + lun: + type: "integer" portals: items: - type: string - type: array - initiatorName: - type: string + type: "string" + type: "array" + readOnly: + type: "boolean" secretRef: properties: name: - type: string - type: object - fsType: - type: string - iqn: - type: string - chapAuthDiscovery: - type: boolean - type: object - rbd: + type: "string" + type: "object" + targetPortal: + type: "string" + type: "object" + name: + type: "string" + nfs: properties: + path: + type: "string" readOnly: - type: boolean - pool: - type: string - keyring: - type: string - image: - type: string - secretRef: - properties: - name: - type: string - type: object - monitors: - items: - type: string - type: array - fsType: - type: string - user: - type: string - type: object - azureFile: + type: "boolean" + server: + type: "string" + type: "object" + persistentVolumeClaim: properties: + claimName: + type: "string" readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - type: object - downwardAPI: + type: "boolean" + type: "object" + photonPersistentDisk: properties: - items: - items: - properties: - path: - type: string - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - mode: - type: integer - type: object - type: array - defaultMode: - type: integer - type: object + fsType: + type: "string" + pdID: + type: "string" + type: "object" + portworxVolume: + properties: + fsType: + type: "string" + readOnly: + type: "boolean" + volumeID: + type: "string" + type: "object" projected: properties: defaultMode: - type: integer + type: "integer" sources: items: properties: - secret: + clusterTrustBundle: properties: - optional: - type: boolean - items: - items: - properties: - path: - type: string - key: - type: string - mode: - type: integer - type: object - type: array + labelSelector: + properties: + matchExpressions: + items: + properties: + key: + type: "string" + operator: + type: "string" + values: + items: + type: "string" + type: "array" + type: "object" + type: "array" + matchLabels: + additionalProperties: + type: "string" + type: "object" + type: "object" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + path: + type: "string" + signerName: + type: "string" + type: "object" configMap: properties: - optional: - type: boolean items: items: properties: - path: - type: string key: - type: string + type: "string" mode: - type: integer - type: object - type: array + type: "integer" + path: + type: "string" + type: "object" + type: "array" name: - type: string - type: object - serviceAccountToken: - properties: - path: - type: string - audience: - type: string - expirationSeconds: - type: integer - type: object + type: "string" + optional: + type: "boolean" + type: "object" downwardAPI: properties: items: items: properties: - path: - type: string fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" + mode: + type: "integer" + path: + type: "string" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + secret: + properties: + items: + items: + properties: + key: + type: "string" mode: - type: integer - type: object - type: array - type: object - type: object - type: array - type: object - azureDisk: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + name: + type: "string" + optional: + type: "boolean" + type: "object" + serviceAccountToken: + properties: + audience: + type: "string" + expirationSeconds: + type: "integer" + path: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + quobyte: properties: + group: + type: "string" readOnly: - type: boolean - diskName: - type: string - cachingMode: - type: string - fsType: - type: string - kind: - type: string - diskURI: - type: string - type: object - cephfs: + type: "boolean" + registry: + type: "string" + tenant: + type: "string" + user: + type: "string" + volume: + type: "string" + type: "object" + rbd: properties: - path: - type: string + fsType: + type: "string" + image: + type: "string" + keyring: + type: "string" + monitors: + items: + type: "string" + type: "array" + pool: + type: "string" readOnly: - type: boolean + type: "boolean" secretRef: properties: name: - type: string - type: object - monitors: - items: - type: string - type: array - secretFile: - type: string + type: "string" + type: "object" user: - type: string - type: object - emptyDir: - properties: - sizeLimit: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - medium: - type: string - type: object - fc: + type: "string" + type: "object" + scaleIO: properties: + fsType: + type: "string" + gateway: + type: "string" + protectionDomain: + type: "string" readOnly: - type: boolean - lun: - type: integer - wwids: - items: - type: string - type: array - targetWWNs: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + sslEnabled: + type: "boolean" + storageMode: + type: "string" + storagePool: + type: "string" + system: + type: "string" + volumeName: + type: "string" + type: "object" + secret: + properties: + defaultMode: + type: "integer" + items: items: - type: string - type: array + properties: + key: + type: "string" + mode: + type: "integer" + path: + type: "string" + type: "object" + type: "array" + optional: + type: "boolean" + secretName: + type: "string" + type: "object" + storageos: + properties: fsType: - type: string - type: object - type: object - type: array - mounts: - description: Mount points for the additional volumes - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array - type: object + type: "string" + readOnly: + type: "boolean" + secretRef: + properties: + name: + type: "string" + type: "object" + volumeName: + type: "string" + volumeNamespace: + type: "string" + type: "object" + vsphereVolume: + properties: + fsType: + type: "string" + storagePolicyID: + type: "string" + storagePolicyName: + type: "string" + volumePath: + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + annotations: + additionalProperties: + type: "string" + description: "Annotations to add to each resource (except pods)." + type: "object" + antiAffinity: + description: "Pod anti-affinity configuration. This override the\ + \ global value if set." + properties: + host: + description: "Indicates the reclaimPolicy property for the\ + \ StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + zone: + description: "Indicates the provisioner property for the StorageClass." + properties: + enabled: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + required: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "boolean" + type: "object" + type: "object" + config: + description: "Configuration." + x-kubernetes-preserve-unknown-fields: true + dataVolume: + description: "Volume configuration for ZooKeeper data." + properties: + existingStorageClassName: + description: "Indicates if an already existing storage class\ + \ should be used." + type: "string" + name: + description: "Indicates the suffix for the volume. Default\ + \ value is 'data'." + type: "string" + size: + description: "Indicates the requested size for the volume.\ + \ The format follows the Kubernetes' Quantity." + type: "string" + storageClass: + description: "Indicates if a StorageClass is used. The operator\ + \ will create the StorageClass if needed." + properties: + extraParams: + additionalProperties: + type: "string" + description: "Adds extra parameters for the StorageClass." + type: "object" + fsType: + description: "Indicates the 'fsType' parameter for the\ + \ StorageClass." + type: "string" + provisioner: + description: "Indicates the provisioner property for the\ + \ StorageClass." + type: "string" + reclaimPolicy: + description: "Indicates the reclaimPolicy property for\ + \ the StorageClass." + type: "string" + type: + description: "Indicates the 'type' parameter for the StorageClass." + type: "string" + type: "object" + type: "object" env: - description: Additional container env variables. + description: "Additional container env variables." items: properties: + name: + type: "string" value: - type: string + type: "string" valueFrom: properties: configMapKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object + type: "string" + optional: + type: "boolean" + type: "object" fieldRef: properties: apiVersion: - type: string + type: "string" fieldPath: - type: string - type: object + type: "string" + type: "object" resourceFieldRef: properties: containerName: - type: string + type: "string" divisor: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true resource: - type: string - type: object + type: "string" + type: "object" secretKeyRef: properties: - optional: - type: boolean key: - type: string + type: "string" name: - type: string - type: object - type: object + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + gracePeriod: + description: "Termination grace period in seconds." + minimum: 0.0 + type: "integer" + image: + description: "Override Pulsar image." + type: "string" + imagePullPolicy: + description: "Override image pull policy." + type: "string" + imagePullSecrets: + description: "Image pull secrets." + items: + properties: name: - type: string - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels to add to each resource (except pods). - type: object + type: "string" + type: "object" + type: "array" initContainers: - description: Init containers + description: "Init containers" items: properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: + properties: + name: + type: "string" + value: + type: "string" + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: + properties: + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: + properties: + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: + properties: + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: + properties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" lifecycle: properties: postStart: properties: - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - preStop: - properties: + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + type: "object" + preStop: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - type: object - command: - items: - type: string - type: array + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" livenessProbe: properties: - periodSeconds: - type: integer + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" failureThreshold: - type: integer - initialDelaySeconds: - type: integer + type: "integer" grpc: properties: port: - type: integer + type: "integer" service: - type: string - type: object - successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - stdin: - type: boolean - image: - type: string - terminationMessagePolicy: - type: string - readinessProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: + properties: exec: properties: command: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" httpGet: properties: - path: - type: string - scheme: - type: string host: - type: string + type: "string" httpHeaders: items: properties: - value: - type: string name: - type: string - type: object - type: array + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object - type: object - terminationMessagePath: - type: string - env: - items: - properties: - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - resource: - type: string - type: object - secretKeyRef: - properties: - optional: - type: boolean - key: - type: string - name: - type: string - type: object - type: object - name: - type: string - type: object - type: array - tty: - type: boolean - args: - items: - type: string - type: array - startupProbe: - properties: - periodSeconds: - type: integer - failureThreshold: - type: integer + scheme: + type: "string" + type: "object" initialDelaySeconds: - type: integer - grpc: - properties: - port: - type: integer - service: - type: string - type: object + type: "integer" + periodSeconds: + type: "integer" successThreshold: - type: integer - terminationGracePeriodSeconds: - type: integer + type: "integer" tcpSocket: properties: host: - type: string + type: "string" port: anyOf: - - type: integer - - type: string + - type: "integer" + - type: "string" x-kubernetes-int-or-string: true - type: object + type: "object" + terminationGracePeriodSeconds: + type: "integer" timeoutSeconds: - type: integer - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - path: - type: string - scheme: - type: string - host: - type: string - httpHeaders: - items: - properties: - value: - type: string - name: - type: string - type: object - type: array - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - stdinOnce: - type: boolean - ports: - items: - properties: - containerPort: - type: integer - hostPort: - type: integer - name: - type: string - protocol: - type: string - hostIP: - type: string - type: object - type: array - workingDir: - type: string - envFrom: + type: "integer" + type: "object" + resizePolicy: items: properties: - prefix: - type: string - configMapRef: - properties: - optional: - type: boolean - name: - type: string - type: object - secretRef: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: + properties: + claims: + items: properties: - optional: - type: boolean name: - type: string - type: object - type: object - type: array - volumeMounts: - items: - properties: - readOnly: - type: boolean - subPathExpr: - type: string - mountPath: - type: string - mountPropagation: - type: string - subPath: - type: string - name: - type: string - type: object - type: array + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" securityContext: properties: - runAsGroup: - type: integer - runAsNonRoot: - type: boolean - windowsOptions: - properties: - gmsaCredentialSpecName: - type: string - hostProcess: - type: boolean - gmsaCredentialSpec: - type: string - runAsUserName: - type: string - type: object allowPrivilegeEscalation: - type: boolean + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" capabilities: properties: add: items: - type: string - type: array + type: "string" + type: "array" drop: items: - type: string - type: array - type: object + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" seLinuxOptions: properties: + level: + type: "string" role: - type: string + type: "string" type: - type: string + type: "string" user: - type: string - level: - type: string - type: object - readOnlyRootFilesystem: - type: boolean - privileged: - type: boolean - runAsUser: - type: integer - procMount: - type: string + type: "string" + type: "object" seccompProfile: properties: - type: - type: string localhostProfile: - type: string - type: object - type: object - name: - type: string - resources: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: object - imagePullPolicy: - type: string + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" volumeDevices: items: properties: devicePath: - type: string + type: "string" name: - type: string - type: object - type: array - type: object - type: array - pdb: - description: Pod disruption budget configuration. + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + labels: + additionalProperties: + type: "string" + description: "Labels to add to each resource (except pods)." + type: "object" + matchLabels: + additionalProperties: + type: "string" + description: "Match labels selectors to add to each pod." + type: "object" + metadataInitializationJob: + description: "Configuration about the job that initializes the\ + \ Pulsar cluster creating the needed ZooKeeper nodes." properties: - maxUnavailable: - description: Number of maxUnavailable pods. - type: integer - minAvailable: - description: Number of minAvailable pods. - type: integer - enabled: - description: Enable Pdb policy. - type: boolean - type: object - tolerations: - description: Pod tolerations. - items: - properties: - key: - type: string - operator: - type: string - tolerationSeconds: - type: integer - value: - type: string - effect: - type: string - type: object - type: array - replicas: - description: Number of desired replicas. - type: integer + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + timeout: + description: "Timeout (in seconds) for the metadata initialization\ + \ execution. Default value is 60." + type: "integer" + type: "object" nodeAffinity: - description: Node affinity configuration. + description: "Node affinity configuration." properties: preferredDuringSchedulingIgnoredDuringExecution: items: properties: - weight: - type: integer preference: properties: - matchFields: + matchExpressions: items: properties: key: - type: string + type: "string" + operator: + type: "string" values: items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: properties: key: - type: string + type: "string" + operator: + type: "string" values: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: object - type: array + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + weight: + type: "integer" + type: "object" + type: "array" requiredDuringSchedulingIgnoredDuringExecution: properties: nodeSelectorTerms: items: properties: - matchFields: + matchExpressions: items: properties: key: - type: string + type: "string" + operator: + type: "string" values: items: - type: string - type: array - operator: - type: string - type: object - type: array - matchExpressions: + type: "string" + type: "array" + type: "object" + type: "array" + matchFields: items: properties: key: - type: string + type: "string" + operator: + type: "string" values: items: - type: string - type: array - operator: - type: string - type: object - type: array - type: object - type: array - type: object - type: object + type: "string" + type: "array" + type: "object" + type: "array" + type: "object" + type: "array" + type: "object" + type: "object" nodeSelectors: additionalProperties: - type: string - description: Additional node selectors. - type: object - antiAffinity: - description: Pod anti-affinity configuration. This override the - global value if set. + type: "string" + description: "Additional node selectors." + type: "object" + pdb: + description: "Pod disruption budget configuration." properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. + enabled: + description: "Enable Pdb policy." + type: "boolean" + maxUnavailable: + description: "Number of maxUnavailable pods." + type: "integer" + minAvailable: + description: "Number of minAvailable pods." + type: "integer" + type: "object" + podAnnotations: + additionalProperties: + type: "string" + description: "Annotations to add to pod." + type: "object" + podLabels: + additionalProperties: + type: "string" + description: "Labels to add to each pod." + type: "object" + podManagementPolicy: + description: "Pod management policy. Default value is 'Parallel'." + type: "string" + probes: + description: "Liveness probe configuration." + properties: + liveness: + description: "Liveness probe configuration." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + readiness: + description: "Readiness probe configuration." properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object + description: "Enables the probe." + type: "boolean" + failureThreshold: + description: "Failure threshold." + type: "integer" + initialDelaySeconds: + description: "Indicates the initial delay (in seconds)\ + \ for the probe." + type: "integer" + periodSeconds: + description: "Indicates the period (in seconds) for the\ + \ probe." + type: "integer" + successThreshold: + description: "Success threshold." + type: "integer" + terminationGracePeriodSeconds: + description: "Indicates the termination grace period (in\ + \ seconds) for the probe." + type: "integer" + timeoutSeconds: + description: "Indicates the timeout (in seconds) for the\ + \ probe." + type: "integer" + type: "object" + type: "object" + replicas: + description: "Number of desired replicas." + type: "integer" + resources: + description: "Resources requirements." + properties: + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" securityContext: description: "Subset of PodSecurityContext for basic UID, GID,\ \ and volume access control." properties: + fsGroup: + type: "integer" + fsGroupChangePolicy: + type: "string" runAsGroup: - type: integer + type: "integer" runAsNonRoot: - type: boolean - fsGroupChangePolicy: - type: string - fsGroup: - type: integer + type: "boolean" + runAsUser: + type: "integer" supplementalGroups: items: - type: integer - type: array - runAsUser: - type: integer - type: object - imagePullPolicy: - description: Override image pull policy. - type: string - podLabels: - additionalProperties: - type: string - description: Labels to add to each pod. - type: object - matchLabels: - additionalProperties: - type: string - description: Match labels selectors to add to each pod. - type: object - serviceAccountName: - description: Service account name for the resource. - type: string - type: object - global: - properties: - components: - description: Pulsar cluster components names. - properties: - brokerBaseName: - description: Broker base name. Default value is 'broker'. - type: string - zookeeperBaseName: - description: Zookeeper base name. Default value is 'zookeeper'. - type: string - functionsWorkerBaseName: - description: Functions Worker base name. Default value is - 'function'. - type: string - autorecoveryBaseName: - description: Autorecovery base name. Default value is 'autorecovery'. - type: string - bookkeeperBaseName: - description: BookKeeper base name. Default value is 'bookkeeper'. - type: string - bastionBaseName: - description: Bastion base name. Default value is 'bastion'. - type: string - proxyBaseName: - description: Proxy base name. Default value is 'proxy'. - type: string - type: object - dnsConfig: - description: | - Override default DNS config for each pod. Note that because we use fully qualified service names for intra - cluster networking with Pulsar components, we set the ndots value to 4 (the default is 5). This prevents - unnecessary DNS lookups for the fully qualified service names that would be guaranteed to result in NXDOMAIN. - For example, the name 'pulsar-broker.pulsar.svc.cluster.local' has 4 dots, so it would be resolved directly - instead of appending the configured search domains. - More info here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config. + type: "integer" + type: "array" + type: "object" + service: + description: "Service configuration." properties: - nameservers: - items: - type: string - type: array - searches: - items: - type: string - type: array - options: + additionalPorts: + description: "Additional ports to add to the Service." items: properties: - value: - type: string - name: - type: string - type: object - type: array - type: object - dnsName: - description: Public dns name for the cluster's load balancer. - type: string - kubernetesClusterDomain: - description: | - The domain name for your kubernetes cluster. - This domain is documented here: https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#a-aaaa-records-1 . - It's used to fully qualify service names when configuring Pulsar. - The default value is 'cluster.local'. - type: string - priorityClassName: - description: Priority class name to attach to each pod. - type: string - name: - description: Name of the Pulsar cluster spec. This is used as - a prefix for managed Kubernetes resources. - type: string - storage: - description: Storage configuration. - properties: - storageClass: - description: Indicates if a StorageClass is used. The operator - will create the StorageClass if needed. - properties: - extraParams: - additionalProperties: - type: string - description: Adds extra parameters for the StorageClass. - type: object - provisioner: - description: Indicates the provisioner property for the - StorageClass. - type: string - type: - description: Indicates the 'type' parameter for the StorageClass. - type: string - fsType: - description: Indicates the 'fsType' parameter for the - StorageClass. - type: string - reclaimPolicy: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: string - type: object - existingStorageClassName: - description: Indicates if an already existing storage class - should be used. - type: string - type: object - tls: - description: TLS configuration for the cluster. - properties: - ssCa: - description: "TLS configurations used by additional components,\ - \ such as the Bastion component." - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - certProvisioner: - description: Certificate provisioner configuration. - properties: - selfSigned: - description: Self signed certificate provisioner configuration. + appProtocol: + type: "string" + name: + type: "string" + nodePort: + type: "integer" + port: + type: "integer" + protocol: + type: "string" + targetPort: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "array" + annotations: + additionalProperties: + type: "string" + description: "Additional annotations to add to the Service." + type: "object" + type: "object" + serviceAccountName: + description: "Service account name for the resource." + type: "string" + sidecars: + description: "Sidecar containers" + items: + properties: + args: + items: + type: "string" + type: "array" + command: + items: + type: "string" + type: "array" + env: + items: properties: - functionsWorker: - description: Functions worker self signed certificate - config. + name: + type: "string" + value: + type: "string" + valueFrom: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + configMapKeyRef: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - includeDns: - description: Include dns name in the DNS names covered - by the certificate. - type: boolean - privateKey: - description: Cert-manager options for generating the - private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - autorecovery: - description: Autorecovery self signed certificate - config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + fieldRef: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - bookkeeper: - description: Bookkeeper self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + apiVersion: + type: "string" + fieldPath: + type: "string" + type: "object" + resourceFieldRef: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - proxy: - description: Proxy self signed certificate config. - properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. + containerName: + type: "string" + divisor: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + resource: + type: "string" + type: "object" + secretKeyRef: properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - zookeeper: - description: Zookeeper self signed certificate config. + key: + type: "string" + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "object" + type: "array" + envFrom: + items: + properties: + configMapRef: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - broker: - description: Broker self signed certificate config. + name: + type: "string" + optional: + type: "boolean" + type: "object" + prefix: + type: "string" + secretRef: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. - items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if not - specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - perComponent: - description: Generate a different certificate for - each component. - type: boolean - enabled: - description: "Generate self signed certificates for\ - \ broker, proxy and functions worker." - type: boolean - caSecretName: - description: Secret where to store the root CA certificate. - type: string - external: - additionalProperties: + name: + type: "string" + optional: + type: "boolean" + type: "object" + type: "object" + type: "array" + image: + type: "string" + imagePullPolicy: + type: "string" + lifecycle: + properties: + postStart: + properties: + exec: properties: - dnsNames: - description: A list of DNS names (and IP addresses) - to include in the certificate's Subject Alternative - Names (SANs) extension along with the default - K8s service DNS. + command: items: - type: string - type: array - privateKey: - description: Cert-manager options for generating - the private key. - properties: - rotationPolicy: - type: string - encoding: - type: string - algorithm: - type: string - size: - type: integer - type: object - secretName: - description: The name of the Kubernetes Secret - where the generated certificate and key will - be stored whe perComponent is enabled. Required - for external services. Internal services pick - up the secret name from the tls config if - not specified - type: string - generate: - description: Generate self signed certificates - for the component. - type: boolean - type: object - description: "External services self signed certificate\ - \ config (e.g., admin console, grafana). The key\ - \ is the service name, and the value contains generation\ - \ config" - type: object - type: object - type: object - autorecovery: - description: TLS configurations related to the Autorecovery - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxyResourceSets: - additionalProperties: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + preStop: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + sleep: + properties: + seconds: + type: "integer" + type: "object" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + type: "object" + livenessProbe: properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Proxy resource - sets. - type: object - defaultSecretName: - description: Secret name used by each component to load TLS - certificates. Each component can load a different secret - by setting the 'secretName' entry in the tls component spec. - type: string - enabled: - description: Deprecated. Use the 'enabled' field in each component - spec instead. - type: boolean - caPath: - description: Path in the container filesystem where the TLS - CA certificates are retrieved. It has to point to a certificate - file. The default value is /etc/ssl/certs/ca-certificates.crt. - type: string - zookeeper: - description: TLS configurations related to the ZooKeeper component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - brokerResourceSets: - additionalProperties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + name: + type: "string" + ports: + items: + properties: + containerPort: + type: "integer" + hostIP: + type: "string" + hostPort: + type: "integer" + name: + type: "string" + protocol: + type: "string" + type: "object" + type: "array" + readinessProbe: properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - description: TLS configurations related to the Broker resource - sets. - type: object - functionsWorker: - description: TLS configurations related to the Functions worker - component. - properties: - enabledWithBroker: - description: Enable TLS for the functions worker to broker - connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - broker: - description: TLS configurations related to the Broker component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - proxy: - description: TLS configurations related to the Proxy component. - properties: - enabledWithBroker: - description: Enable TLS for the proxy to broker connections. - type: boolean - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - bookkeeper: - description: TLS configurations related to the BookKeeper - component. - properties: - secretName: - description: Override the default secret name from where - to load the certificates. - type: string - enabled: - description: Enable TLS. - type: boolean - type: object - type: object - clusterName: - description: Corresponds to the 'clusterName' field in the broker.conf. Defaults - to the value of the 'name' field - type: string - restartOnConfigMapChange: - description: | - By default, Kubernetes will not restart pods when only their configmap is changed. This setting will restart pods when their configmap is changed using an annotation that calculates the checksum of the configmap. - type: boolean - image: - description: Default Pulsar image to use. Any components can be - configured to use a different image. - type: string - auth: - description: | - Authentication and authorization configuration. - properties: - token: - description: Token based authentication configuration. - properties: - privateKeyFile: - description: Private key file name stored in the Secret. - Default is 'my-private.key' - type: string - initialize: - description: Initialize Secrets with new pair of keys - and tokens for the super user roles. The generated Secret - name is 'token-'. - type: boolean - superUserRoles: - description: Super user roles. - items: - type: string - type: array - proxyRoles: - description: Proxy roles. - items: - type: string - type: array - publicKeyFile: - description: Public key file name stored in the Secret. - Default is 'my-public.key' - type: string - type: object - enabled: - description: Enable authentication in the cluster. Default - is 'false'. - type: boolean - type: object - persistence: - description: | - If persistence is enabled, components that has state will be deployed with PersistentVolumeClaims, otherwise, for test purposes, they will be deployed with emptyDir - type: boolean - racks: - additionalProperties: - properties: - host: - description: Enable rack rules based on the hostname of - the node. + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + resizePolicy: + items: + properties: + resourceName: + type: "string" + restartPolicy: + type: "string" + type: "object" + type: "array" + resources: properties: - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - zone: - description: Enable rack rules based on the failure domain - (availability zone) of the node. + claims: + items: + properties: + name: + type: "string" + type: "object" + type: "array" + limits: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + requests: + additionalProperties: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + type: "object" + restartPolicy: + type: "string" + securityContext: properties: - enableHostAntiAffinity: - description: "Enable the host anti affinity. If set,\ - \ all the pods of the same rack will deployed on different\ - \ nodes of the same zone.Default is true." - type: boolean - requireRackHostAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced for the host. Default is true.\ - \ If required, the affinity rule will be enforced\ - \ using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - enabled: - description: Enable the rack affinity rules. - type: boolean - requireRackAntiAffinity: - description: "Indicates if the podAntiAffinity rules\ - \ will be enforced. Default is true. If required,\ - \ the affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - requireRackAffinity: - description: "Indicates if the podAffinity rules will\ - \ be enforced. Default is false. If required, the\ - \ affinity rule will be enforced using 'requiredDuringSchedulingIgnoredDuringExecution'." - type: boolean - type: object - type: object - description: Racks configuration. - type: object - resourceSets: - additionalProperties: + allowPrivilegeEscalation: + type: "boolean" + appArmorProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + capabilities: + properties: + add: + items: + type: "string" + type: "array" + drop: + items: + type: "string" + type: "array" + type: "object" + privileged: + type: "boolean" + procMount: + type: "string" + readOnlyRootFilesystem: + type: "boolean" + runAsGroup: + type: "integer" + runAsNonRoot: + type: "boolean" + runAsUser: + type: "integer" + seLinuxOptions: + properties: + level: + type: "string" + role: + type: "string" + type: + type: "string" + user: + type: "string" + type: "object" + seccompProfile: + properties: + localhostProfile: + type: "string" + type: + type: "string" + type: "object" + windowsOptions: + properties: + gmsaCredentialSpec: + type: "string" + gmsaCredentialSpecName: + type: "string" + hostProcess: + type: "boolean" + runAsUserName: + type: "string" + type: "object" + type: "object" + startupProbe: + properties: + exec: + properties: + command: + items: + type: "string" + type: "array" + type: "object" + failureThreshold: + type: "integer" + grpc: + properties: + port: + type: "integer" + service: + type: "string" + type: "object" + httpGet: + properties: + host: + type: "string" + httpHeaders: + items: + properties: + name: + type: "string" + value: + type: "string" + type: "object" + type: "array" + path: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + scheme: + type: "string" + type: "object" + initialDelaySeconds: + type: "integer" + periodSeconds: + type: "integer" + successThreshold: + type: "integer" + tcpSocket: + properties: + host: + type: "string" + port: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + type: "object" + terminationGracePeriodSeconds: + type: "integer" + timeoutSeconds: + type: "integer" + type: "object" + stdin: + type: "boolean" + stdinOnce: + type: "boolean" + terminationMessagePath: + type: "string" + terminationMessagePolicy: + type: "string" + tty: + type: "boolean" + volumeDevices: + items: + properties: + devicePath: + type: "string" + name: + type: "string" + type: "object" + type: "array" + volumeMounts: + items: + properties: + mountPath: + type: "string" + mountPropagation: + type: "string" + name: + type: "string" + readOnly: + type: "boolean" + recursiveReadOnly: + type: "string" + subPath: + type: "string" + subPathExpr: + type: "string" + type: "object" + type: "array" + workingDir: + type: "string" + type: "object" + type: "array" + tolerations: + description: "Pod tolerations." + items: properties: - rack: - description: "Place this resource set to a specific rack,\ - \ defined at .global.racks." - type: string - type: object - description: Resource sets. - type: object - nodeSelectors: - additionalProperties: - type: string - description: "Global node selector. If set, this will apply to\ - \ all the components." - type: object - antiAffinity: - description: Pod anti affinity configuration. + effect: + type: "string" + key: + type: "string" + operator: + type: "string" + tolerationSeconds: + type: "integer" + value: + type: "string" + type: "object" + type: "array" + updateStrategy: + description: "Update strategy for the StatefulSet. Default value\ + \ is rolling update." properties: - host: - description: Indicates the reclaimPolicy property for the - StorageClass. - properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - zone: - description: Indicates the provisioner property for the StorageClass. + rollingUpdate: properties: - required: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - enabled: - description: Indicates the reclaimPolicy property for - the StorageClass. - type: boolean - type: object - type: object - zookeeperPlainSslStorePassword: - description: "Use plain password in zookeeper server and client\ - \ configuration. Default is false. Old versions of Apache Zookeeper\ - \ (<3.8.0) does not support getting password from file. In that\ - \ case, set this to true." - type: boolean - imagePullPolicy: - description: Default Pulsar image pull policy to use. Any components - can be configured to use a different image pull policy. Default - value is 'IfNotPresent'. - type: string - required: - - name - type: object - type: object + maxUnavailable: + anyOf: + - type: "integer" + - type: "string" + x-kubernetes-int-or-string: true + partition: + type: "integer" + type: "object" + type: + type: "string" + type: "object" + type: "object" + type: "object" status: properties: - lastApplied: - description: Last spec applied. - type: string conditions: description: |- Conditions: 1. Condition Ready: possible status are True or False. If False, the reason contains the error message. items: properties: - status: - type: string - reason: - type: string lastTransitionTime: - type: string + type: "string" + message: + type: "string" observedGeneration: - type: integer + type: "integer" + reason: + type: "string" + status: + type: "string" type: - type: string - message: - type: string - type: object - type: array - type: object - type: object + type: "string" + type: "object" + type: "array" + lastApplied: + description: "Last spec applied." + type: "string" + type: "object" + type: "object" served: true storage: true subresources: diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index 77d55b99..086ee789 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.5-SNAPSHOT + 0.4.0-SNAPSHOT 4.0.0 diff --git a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java index 95e3ab19..91ef78f4 100644 --- a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java +++ b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java @@ -1070,6 +1070,7 @@ private void assertValue(File tmpDir) { instanceLivenessCheckFreqMs: 30000 kubernetesContainerFactory: jobNamespace: pulsar + k8Uri: "" percentMemoryPadding: 50 pulsarAdminUrl: http://pulsar-cluster-function.pulsar:6750/ pulsarDockerImageName: pulsar:latest @@ -1091,6 +1092,7 @@ private void assertValue(File tmpDir) { prometheus.io/path: /metrics prometheus.io/port: 9094 prometheus.io/scrape: "true" + extraLabels: "" jobNamespace: pulsar nodeSelectorLabels: astra-node: functionworker diff --git a/operator-common/pom.xml b/operator-common/pom.xml index abde86d5..9c1cc0bf 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.5-SNAPSHOT + 0.4.0-SNAPSHOT 4.0.0 @@ -36,6 +36,11 @@ + + io.fabric8 + kubernetes-server-mock + test + org.skyscreamer jsonassert diff --git a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubeServer.java b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubeServer.java new file mode 100644 index 00000000..a3de7c69 --- /dev/null +++ b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubeServer.java @@ -0,0 +1,49 @@ +/* + * Copyright DataStax, Inc. + * + * 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. + */ +package com.datastax.oss.kaap.mocks; + +import io.fabric8.kubernetes.client.NamespacedKubernetesClient; +import io.fabric8.kubernetes.client.okhttp.OkHttpClientFactory; +import io.fabric8.kubernetes.client.server.mock.KubernetesServer; +import java.util.concurrent.atomic.AtomicReference; + +public class MockKubeServer extends KubernetesServer { + + private AtomicReference client = new AtomicReference(null); + + public MockKubeServer() { + super(false); + } + + @Override + public void before() { + super.before(); + client.set(getKubernetesMockServer().createClient(new OkHttpClientFactory())); + } + + @Override + public NamespacedKubernetesClient getClient() { + return client.get(); + } + + @Override + public void after() { + super.after(); + if (client.get() != null) { + client.get().close(); + } + } +} diff --git a/operator/Dockerfile b/operator/Dockerfile index 95d2ba69..3b9f1de2 100644 --- a/operator/Dockerfile +++ b/operator/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi8/openjdk-17:1.21 +FROM registry.access.redhat.com/ubi8/openjdk-17:1.23 ENV LANGUAGE='en_US:en' diff --git a/operator/pom.xml b/operator/pom.xml index f0cbb608..7bfca83a 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.5-SNAPSHOT + 0.4.0-SNAPSHOT 4.0.0 @@ -28,9 +28,9 @@ true - - + true + ${project.groupId} @@ -40,13 +40,11 @@ io.fabric8 crd-generator-api - ${kubernetes-client.version} provided io.fabric8 certmanager-model-v1 - ${kubernetes-client.version} io.quarkiverse.operatorsdk @@ -74,7 +72,10 @@ - + + io.fabric8 + kubernetes-httpclient-okhttp + org.bouncycastle bcprov-jdk15on @@ -139,14 +140,13 @@ awaitility test - io.quarkus quarkus-maven-plugin - 2.15.1.Final + 3.17.8 @@ -230,6 +230,7 @@ skip-crds false + false diff --git a/operator/src/main/java/com/datastax/oss/kaap/KubernetesClientFactory.java b/operator/src/main/java/com/datastax/oss/kaap/KubernetesClientFactory.java new file mode 100644 index 00000000..22162dc7 --- /dev/null +++ b/operator/src/main/java/com/datastax/oss/kaap/KubernetesClientFactory.java @@ -0,0 +1,32 @@ +/* + * Copyright DataStax, Inc. + * + * 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. + */ +package com.datastax.oss.kaap; + +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.KubernetesClientBuilder; +import io.fabric8.kubernetes.client.okhttp.OkHttpClientFactory; +import jakarta.enterprise.inject.Produces; +import jakarta.inject.Singleton; + +@Singleton +public class KubernetesClientFactory { + @Produces + public KubernetesClient kubernetesClient() { + return new KubernetesClientBuilder() + .withHttpClientFactory(new OkHttpClientFactory()) + .build(); + } +} \ No newline at end of file diff --git a/operator/src/main/java/com/datastax/oss/kaap/LeaderElectionConfig.java b/operator/src/main/java/com/datastax/oss/kaap/LeaderElectionConfig.java index e8d36d5b..0852a7c2 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/LeaderElectionConfig.java +++ b/operator/src/main/java/com/datastax/oss/kaap/LeaderElectionConfig.java @@ -17,7 +17,7 @@ import io.javaoperatorsdk.operator.api.config.LeaderElectionConfiguration; import io.quarkus.arc.Unremovable; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; @ApplicationScoped @Unremovable diff --git a/operator/src/main/java/com/datastax/oss/kaap/autoscaler/BookKeeperSetAutoscaler.java b/operator/src/main/java/com/datastax/oss/kaap/autoscaler/BookKeeperSetAutoscaler.java index 16eb4966..749c79e6 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/autoscaler/BookKeeperSetAutoscaler.java +++ b/operator/src/main/java/com/datastax/oss/kaap/autoscaler/BookKeeperSetAutoscaler.java @@ -28,13 +28,13 @@ import com.datastax.oss.kaap.crds.bookkeeper.BookKeeperSetSpec; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; import io.fabric8.kubernetes.client.KubernetesClient; +import jakarta.validation.Valid; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.TreeMap; import java.util.concurrent.RejectedExecutionException; import java.util.stream.Collectors; -import javax.validation.Valid; import lombok.Data; import lombok.SneakyThrows; import lombok.extern.jbosslog.JBossLog; diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/AbstractController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/AbstractController.java index efaba89a..b8f86b36 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/AbstractController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/AbstractController.java @@ -40,17 +40,17 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.Reconciler; import io.javaoperatorsdk.operator.api.reconciler.UpdateControl; +import jakarta.inject.Inject; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validation; +import jakarta.validation.Validator; import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import javax.inject.Inject; -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; import lombok.AllArgsConstructor; import lombok.Data; import lombok.SneakyThrows; diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java index 2e4764d1..9cd61e05 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java @@ -975,14 +975,14 @@ protected String generateCertConverterScript() { p12File=/pulsar/tls.p12 keyStoreFile=/pulsar/tls.keystore.jks trustStoreFile=/pulsar/tls.truststore.jks - + head /dev/urandom | base64 | head -c 24 > /pulsar/keystoreSecret.txt export tlsTrustStorePassword=$(cat /pulsar/keystoreSecret.txt) export PF_tlsTrustStorePassword=$(cat /pulsar/keystoreSecret.txt) export tlsKeyStorePassword=$(cat /pulsar/keystoreSecret.txt) export PF_tlsKeyStorePassword=$(cat /pulsar/keystoreSecret.txt) export PULSAR_PREFIX_brokerClientTlsTrustStorePassword=$(cat /pulsar/keystoreSecret.txt) - + openssl pkcs12 \\ -export \\ -in ${crtFile} \\ @@ -990,14 +990,14 @@ protected String generateCertConverterScript() { -out ${p12File} \\ -name ${name} \\ -passout "file:/pulsar/keystoreSecret.txt" - + keytool -importkeystore \\ -srckeystore ${p12File} \\ -srcstoretype PKCS12 -srcstorepass:file "/pulsar/keystoreSecret.txt" \\ -alias ${name} \\ -destkeystore ${keyStoreFile} \\ -deststorepass:file "/pulsar/keystoreSecret.txt" - + keytool -import \\ -file ${caFile} \\ -storetype JKS \\ @@ -1053,12 +1053,12 @@ protected String generateCertConverterScript() { script += """ ( cat >> conf/pulsar_env.sh << EOF - + PULSAR_EXTRA_OPTS="\\${PULSAR_EXTRA_OPTS} %s" EOF ) && ( cat >> conf/bkenv.sh << EOF - + BOOKIE_EXTRA_OPTS="\\${BOOKIE_EXTRA_OPTS} %s" EOF ) && diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/PulsarClusterController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/PulsarClusterController.java index c8dc3742..45e2a58e 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/PulsarClusterController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/PulsarClusterController.java @@ -58,12 +58,12 @@ import io.javaoperatorsdk.operator.api.reconciler.Context; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.quarkus.runtime.ShutdownEvent; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.event.Observes; import lombok.SneakyThrows; import lombok.extern.jbosslog.JBossLog; diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperController.java index 7889b1f7..5eaaf219 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperController.java @@ -36,12 +36,12 @@ import io.fabric8.kubernetes.client.KubernetesClient; import io.javaoperatorsdk.operator.api.reconciler.ControllerConfiguration; import io.quarkus.runtime.ShutdownEvent; +import jakarta.enterprise.event.Observes; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import javax.enterprise.event.Observes; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/GlobalSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/GlobalSpec.java index 179bbdc4..fcc1874c 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/GlobalSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/GlobalSpec.java @@ -27,13 +27,13 @@ import io.fabric8.kubernetes.api.model.PodDNSConfig; import io.fabric8.kubernetes.api.model.PodDNSConfigBuilder; import io.fabric8.kubernetes.api.model.PodDNSConfigOptionBuilder; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.constraints.NotNull; import java.util.Map; import java.util.Set; import java.util.TreeSet; import java.util.function.Supplier; import java.util.stream.Collectors; -import javax.validation.ConstraintValidatorContext; -import javax.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoveryFullSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoveryFullSpec.java index 13509f2e..76d1eb17 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoveryFullSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoveryFullSpec.java @@ -18,7 +18,7 @@ import com.datastax.oss.kaap.crds.FullSpecWithDefaults; import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.validation.ValidSpec; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java index f418fafc..13575b3f 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java @@ -33,11 +33,11 @@ import io.fabric8.kubernetes.api.model.ResourceRequirements; import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; import io.fabric8.kubernetes.api.model.Toleration; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Map; import java.util.function.Supplier; -import javax.validation.ConstraintValidatorContext; -import javax.validation.constraints.Min; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionFullSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionFullSpec.java index af4c91db..3ad43058 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionFullSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionFullSpec.java @@ -18,7 +18,7 @@ import com.datastax.oss.kaap.crds.FullSpecWithDefaults; import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.validation.ValidSpec; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java index d4a135d8..597447c6 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java @@ -33,11 +33,11 @@ import io.fabric8.kubernetes.api.model.ResourceRequirements; import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; import io.fabric8.kubernetes.api.model.Toleration; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Map; import java.util.function.Supplier; -import javax.validation.ConstraintValidatorContext; -import javax.validation.constraints.Min; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperAutoRackConfig.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperAutoRackConfig.java index ddf41119..e7e411f4 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperAutoRackConfig.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperAutoRackConfig.java @@ -34,7 +34,7 @@ public class BookKeeperAutoRackConfig { @JsonPropertyDescription("Enable rack configuration monitoring.") Boolean enabled; @Min(1000) - @javax.validation.constraints.Min(1000) + @jakarta.validation.constraints.Min(1000) @JsonPropertyDescription("Period for the schedule of the monitoring thread.") Long periodMs; @JsonPropertyDescription("Additional configuration for the zookeeper client.") diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperAutoscalerSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperAutoscalerSpec.java index 03f590aa..5256e5b2 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperAutoscalerSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperAutoscalerSpec.java @@ -33,7 +33,7 @@ public class BookKeeperAutoscalerSpec { Boolean enabled; @Min(1000) - @javax.validation.constraints.Min(1000) + @jakarta.validation.constraints.Min(1000) @JsonPropertyDescription("The interval in milliseconds between two consecutive autoscaling checks.") Long periodMs; @@ -52,7 +52,7 @@ public class BookKeeperAutoscalerSpec { Double diskUsageToleranceLwm; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription( "Min number of writable bookies. The autoscaler will scale up if not enough writable bookies are detected" + ". For instance, if a bookie went to read-only mode, " @@ -60,23 +60,23 @@ public class BookKeeperAutoscalerSpec { Integer minWritableBookies; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription("The number of bookies to add at each scale up. Default is '1'") Integer scaleUpBy; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription("Max number of bookies. If the number of bookies is equals to this value, the " + "autoscaler will never scale up.") Integer scaleUpMaxLimit; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription("The number of bookies to remove at each scale down. Default is '1'") Integer scaleDownBy; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription( "The stabilization window is used to restrict the flapping of replica count when the metrics used for " + "scaling keep fluctuating. " diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperFullSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperFullSpec.java index 6ed75914..bfd743ad 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperFullSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperFullSpec.java @@ -18,7 +18,7 @@ import com.datastax.oss.kaap.crds.FullSpecWithDefaults; import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.validation.ValidSpec; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java index fdb1bfee..b80b4d3b 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java @@ -31,13 +31,13 @@ import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.apps.StatefulSetUpdateStrategy; import io.fabric8.kubernetes.api.model.apps.StatefulSetUpdateStrategyBuilder; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.Valid; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -import javax.validation.ConstraintValidatorContext; -import javax.validation.Valid; -import javax.validation.constraints.Min; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSpec.java index 617aea5d..4d748d4d 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSpec.java @@ -20,10 +20,10 @@ import com.datastax.oss.kaap.crds.GlobalSpec; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import jakarta.validation.ConstraintValidatorContext; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.function.Supplier; -import javax.validation.ConstraintValidatorContext; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerAutoscalerSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerAutoscalerSpec.java index 1ab8afd9..9f246ac5 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerAutoscalerSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerAutoscalerSpec.java @@ -35,11 +35,11 @@ public class BrokerAutoscalerSpec { @JsonPropertyDescription("Enable autoscaling for brokers.") Boolean enabled; @Min(1000) - @javax.validation.constraints.Min(1000) + @jakarta.validation.constraints.Min(1000) @JsonPropertyDescription("The interval in milliseconds between two consecutive autoscaling checks.") Long periodMs; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription("Min number of brokers. If the number of brokers is equals to this value, the autoscaler" + " will never scale down.") Integer min; @@ -48,28 +48,28 @@ public class BrokerAutoscalerSpec { Integer max; @Min(0) @Max(1) - @javax.validation.constraints.Min(0) - @javax.validation.constraints.Max(1) + @jakarta.validation.constraints.Min(0) + @jakarta.validation.constraints.Max(1) @JsonPropertyDescription("The threshold to trigger a scale down. The autoscaler will scale down if all the " + "brokers cpu usage is lower than this threshold. Default is '0.4'") Double lowerCpuThreshold; @Min(0) @Max(1) - @javax.validation.constraints.Min(0) - @javax.validation.constraints.Max(1) + @jakarta.validation.constraints.Min(0) + @jakarta.validation.constraints.Max(1) @JsonPropertyDescription("The threshold to trigger a scale up. The autoscaler will scale up if all the " + "brokers cpu usage is higher than this threshold. Default is '0.8'") Double higherCpuThreshold; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription("The number of brokers to add at each scale up. Default is '1'") Integer scaleUpBy; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription("The number of brokers to remove at each scale down. Default is '1'") Integer scaleDownBy; @Min(1) - @javax.validation.constraints.Min(1) + @jakarta.validation.constraints.Min(1) @JsonPropertyDescription("The stabilization window is used to restrict the flapping of replica count when the metrics used for scaling keep fluctuating. " + "The autoscaling algorithm uses this window to infer a previous desired state and avoid unwanted changes to workload scale." + "Default value is 5 minutes after the pod readiness.") diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerFullSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerFullSpec.java index 8823727d..157b0492 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerFullSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerFullSpec.java @@ -18,7 +18,7 @@ import com.datastax.oss.kaap.crds.FullSpecWithDefaults; import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.validation.ValidSpec; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSetSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSetSpec.java index 472f7d7d..74e76760 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSetSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSetSpec.java @@ -30,13 +30,13 @@ import io.fabric8.kubernetes.api.model.ResourceRequirementsBuilder; import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.apps.StatefulSetUpdateStrategy; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.Valid; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -import javax.validation.ConstraintValidatorContext; -import javax.validation.Valid; -import javax.validation.constraints.Min; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSpec.java index d5bf5e0e..f234dbe0 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSpec.java @@ -19,9 +19,9 @@ import com.datastax.oss.kaap.crds.GlobalSpec; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import jakarta.validation.ConstraintValidatorContext; import java.util.Arrays; import java.util.LinkedHashMap; -import javax.validation.ConstraintValidatorContext; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/cluster/PulsarClusterSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/cluster/PulsarClusterSpec.java index e470369c..cacee678 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/cluster/PulsarClusterSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/cluster/PulsarClusterSpec.java @@ -32,12 +32,12 @@ import com.datastax.oss.kaap.crds.validation.ValidSpec; import com.datastax.oss.kaap.crds.validation.ValidableSpec; import com.datastax.oss.kaap.crds.zookeeper.ZooKeeperSpec; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.Valid; import java.lang.reflect.Field; import java.util.Collections; import java.util.Map; import java.util.Set; -import javax.validation.ConstraintValidatorContext; -import javax.validation.Valid; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerFullSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerFullSpec.java index 3d0ad50b..485a7667 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerFullSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerFullSpec.java @@ -18,7 +18,7 @@ import com.datastax.oss.kaap.crds.FullSpecWithDefaults; import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.validation.ValidSpec; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java index 85c0bf82..c7beda38 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java @@ -31,11 +31,11 @@ import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.apps.StatefulSetUpdateStrategy; import io.fabric8.kubernetes.api.model.apps.StatefulSetUpdateStrategyBuilder; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Map; import java.util.function.Supplier; -import javax.validation.ConstraintValidatorContext; -import javax.validation.constraints.Min; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxyFullSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxyFullSpec.java index 93cbb7c9..530f4260 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxyFullSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxyFullSpec.java @@ -18,7 +18,7 @@ import com.datastax.oss.kaap.crds.FullSpecWithDefaults; import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.validation.ValidSpec; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java index 75629166..1051fed4 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java @@ -31,11 +31,11 @@ import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.apps.DeploymentStrategy; import io.fabric8.kubernetes.api.model.apps.DeploymentStrategyBuilder; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Map; import java.util.function.Supplier; -import javax.validation.ConstraintValidatorContext; -import javax.validation.constraints.Min; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySpec.java index e3e5c25d..564e49b8 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySpec.java @@ -17,9 +17,9 @@ import com.datastax.oss.kaap.crds.GlobalSpec; import com.fasterxml.jackson.annotation.JsonPropertyDescription; +import jakarta.validation.ConstraintValidatorContext; import java.util.Arrays; import java.util.LinkedHashMap; -import javax.validation.ConstraintValidatorContext; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/validation/ValidSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/validation/ValidSpec.java index 36dfb6d0..02afa9e0 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/validation/ValidSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/validation/ValidSpec.java @@ -16,9 +16,9 @@ package com.datastax.oss.kaap.crds.validation; import static java.lang.annotation.RetentionPolicy.RUNTIME; +import jakarta.validation.Constraint; +import jakarta.validation.Payload; import java.lang.annotation.Retention; -import javax.validation.Constraint; -import javax.validation.Payload; @Retention(RUNTIME) @Constraint(validatedBy = {}) diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/validation/ValidableSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/validation/ValidableSpec.java index cb307b82..fb2705a0 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/validation/ValidableSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/validation/ValidableSpec.java @@ -15,7 +15,7 @@ */ package com.datastax.oss.kaap.crds.validation; -import javax.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidator; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperFullSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperFullSpec.java index 468eff33..c5b7410d 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperFullSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperFullSpec.java @@ -18,7 +18,7 @@ import com.datastax.oss.kaap.crds.FullSpecWithDefaults; import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.validation.ValidSpec; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java index b553b02f..5e503b44 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java @@ -31,11 +31,11 @@ import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.apps.StatefulSetUpdateStrategy; import io.fabric8.kubernetes.api.model.apps.StatefulSetUpdateStrategyBuilder; +import jakarta.validation.ConstraintValidatorContext; +import jakarta.validation.constraints.Min; import java.util.List; import java.util.Map; import java.util.function.Supplier; -import javax.validation.ConstraintValidatorContext; -import javax.validation.constraints.Min; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/operator/src/main/resources/application.properties b/operator/src/main/resources/application.properties index a8e0243d..4faa7947 100644 --- a/operator/src/main/resources/application.properties +++ b/operator/src/main/resources/application.properties @@ -17,6 +17,7 @@ ## quarkus options quarkus.log.console.format=%d{HH:mm:ss} %-5p [%c{3.}] (%t) %s%e%n +quarkus.operator-sdk.fail-on-version-check=true ## container-image options diff --git a/pom.xml b/pom.xml index 844f0dc7..e79a456b 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.3.5-SNAPSHOT + 0.4.0-SNAPSHOT operator-common operator @@ -41,29 +41,36 @@ 17 UTF-8 UTF-8 - 5.1.4 - - 6.3.1 + 6.9.3 + + 6.13.4 7.7.0 4.10.0 - 1.18.32 + 1.18.42 4.7.2.1 4.7.2 3.2.1 1.15 - 3.12.0 + 3.19.0 0.11.5 - 2.13.4 - 0.93.2 - 1.17.6 + 1.21.3 3.3.0 1.5.1 4.2.0 5.6.0 3.9.2 + 1.70 + 1.5.20
+ + io.fabric8 + kubernetes-client-bom + ${fabric8.version} + pom + import + io.quarkiverse.operatorsdk quarkus-operator-sdk-bom @@ -111,7 +118,22 @@ io.fabric8 crd-generator-api - ${kubernetes-client.version} + ${fabric8.version} + + + io.fabric8 + certmanager-model-v1 + ${fabric8.version} + + + io.fabric8 + kubernetes-httpclient-okhttp + ${fabric8.version} + + + io.fabric8 + kubernetes-server-mock + ${fabric8.version} io.jsonwebtoken @@ -128,18 +150,6 @@ jjwt-jackson ${jjwt.version} - - com.fasterxml.jackson - jackson-bom - ${jackson.version} - pom - import - - - io.sundr - sundr-adapter-reflect - ${sundrio.version} - org.testcontainers testcontainers @@ -166,6 +176,21 @@ zookeeper ${zookkeeper.version} + + org.bouncycastle + bcprov-jdk15on + ${bouncy-castle.version} + + + org.bouncycastle + bcpkix-jdk15on + ${bouncy-castle.version} + + + ch.qos.logback + logback-classic + ${logback-classic.version} + @@ -205,14 +230,13 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.1 + 3.14.1 false UTF-8 true true - true -parameters -Xlint:all diff --git a/src/generate-crds-docs.sh b/src/generate-crds-docs.sh index b034cb94..7739c601 100755 --- a/src/generate-crds-docs.sh +++ b/src/generate-crds-docs.sh @@ -16,10 +16,19 @@ # limitations under the License. # +if command -v docker >/dev/null 2>&1; then + DOCKER_COMMAND="docker" +elif command -v podman >/dev/null 2>&1; then + DOCKER_COMMAND="podman" +else + echo "Error: Neither 'docker' nor 'podman' command found in PATH." >&2 + exit 1 +fi + set -e echo "Generating CRDs docs" mvn clean package -Pupdate-crds -pl operator -docker run -u $(id -u):$(id -g) --rm -v ${PWD}:/workdir ghcr.io/fybrik/crdoc:latest \ +${DOCKER_COMMAND} run -u $(id -u):$(id -g) --rm -v ${PWD}:/workdir ghcr.io/fybrik/crdoc:latest \ --resources /workdir/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml \ --template /workdir/src/reference-markdown-template.tmpl \ --output /workdir/docs/api-reference.md diff --git a/tests/pom.xml b/tests/pom.xml index 409967c3..82bc1f53 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.3.5-SNAPSHOT + 0.4.0-SNAPSHOT 4.0.0 @@ -71,7 +71,6 @@ jakarta.validation jakarta.validation-api - 2.0.2 test @@ -104,7 +103,6 @@ ch.qos.logback logback-classic - 1.2.13 test @@ -123,13 +121,11 @@ io.fabric8 kubernetes-client - ${kubernetes-client.version} test io.fabric8 certmanager-client - ${kubernetes-client.version} test diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java index b93457c3..7ef0f90b 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java @@ -68,6 +68,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -250,6 +251,9 @@ private String simulateHelmRendering(List allRbac) { String result = ""; // simulate go templating for (String l : allRbac) { + if (l.contains("nodeSelector") || l.contains(".nodeSelector")) { // nodeselector is empty anyway. This resolves duplicate nodeselectors + continue; + } if (l.contains("{{- if")) { // assume always true and no content other than the if continue; } @@ -561,7 +565,9 @@ protected void deleteManifest(String manifest) { protected void deleteManifest(byte[] manifest) { final List resources = - client.load(new ByteArrayInputStream(manifest)).get(); + client.load(new ByteArrayInputStream(manifest)).get().stream() + .filter(Objects::nonNull) + .collect(Collectors.toList()); client.resourceList(resources).inNamespace(namespace).delete(); } From 674c906749959880122d8059c6807376eca7f582 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Fri, 24 Oct 2025 06:27:40 -0500 Subject: [PATCH 31/69] simplify nodeSelector config (#208) --- helm/kaap/templates/operator.yaml | 9 +++------ .../java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java | 9 ++++----- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/helm/kaap/templates/operator.yaml b/helm/kaap/templates/operator.yaml index 48196f4e..c6bf391d 100644 --- a/helm/kaap/templates/operator.yaml +++ b/helm/kaap/templates/operator.yaml @@ -48,13 +48,10 @@ spec: {{- include "kaap.selectorLabels" . | nindent 8 }} namespace: {{ .Release.Namespace }} spec: - {{- if and (.Values.nodeSelector) (not .Values.operator.nodeSelector) }} + {{- $nodeSelector := coalesce .Values.operator.nodeSelector .Values.nodeSelector -}} + {{- if $nodeSelector }} nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - {{- end }} - {{- if .Values.operator.nodeSelector }} - nodeSelector: -{{ toYaml .Values.operator.nodeSelector | indent 8 }} +{{ toYaml $nodeSelector | indent 8 }} {{- end }} {{- if .Values.operator.tolerations }} tolerations: diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java index 7ef0f90b..e6fc1815 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/BaseK8sEnvTest.java @@ -237,8 +237,7 @@ private String simulateHelmRendering(List allRbac) { vars.put(".Values.operator.readinessProbe.periodSeconds", "30"); vars.put(".Values.operator.readinessProbe.successThreshold", "1"); vars.put(".Values.operator.readinessProbe.timeoutSeconds", "10"); - vars.put(".Values.nodeSelector", " {}"); - vars.put(".Values.operator.nodeSelector", " {}"); + vars.put("$nodeSelector", " {}"); vars.put(".Values.operator.tolerations", " []"); vars.put("include \"kaap.name\" .", "kaap"); vars.put("include \"kaap.roleName\" .", "kaap"); @@ -249,9 +248,9 @@ private String simulateHelmRendering(List allRbac) { vars.put("include \"kaap.selectorLabels\" . | nindent 8", "{app.kubernetes.io/name: kaap}"); vars.put("include (print $.Template.BasePath \"/configmap.yaml\") . | sha256sum", "sha"); String result = ""; - // simulate go templating + // simulate Helm templating for (String l : allRbac) { - if (l.contains("nodeSelector") || l.contains(".nodeSelector")) { // nodeselector is empty anyway. This resolves duplicate nodeselectors + if (l.contains("{{- $")) { // ignore variable definitions continue; } if (l.contains("{{- if")) { // assume always true and no content other than the if @@ -268,7 +267,7 @@ private String simulateHelmRendering(List allRbac) { result += l + System.lineSeparator(); } if (result.contains("{{")) { - throw new RuntimeException("Failed to replace all go templating vars, template: " + result); + throw new RuntimeException("Failed to replace all Helm templating vars, template: " + result); } return result; } From d725cb0e0cf14ddb305cba31f655f5a77d1d53ba Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Fri, 24 Oct 2025 19:40:20 -0500 Subject: [PATCH 32/69] upgrade maven plugins (#209) Upgrade quarkus maven plugin and other dependencies --- operator/pom.xml | 7 ++++--- pom.xml | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/operator/pom.xml b/operator/pom.xml index 7bfca83a..6fe8a283 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -27,6 +27,7 @@ kaap-operator + 3.28.5 true true @@ -146,7 +147,7 @@ io.quarkus quarkus-maven-plugin - 3.17.8 + ${quarkus-platform.version} @@ -157,7 +158,7 @@ maven-resources-plugin - 3.0.2 + 3.3.1 @@ -235,4 +236,4 @@ - \ No newline at end of file + diff --git a/pom.xml b/pom.xml index e79a456b..3c68ae7e 100644 --- a/pom.xml +++ b/pom.xml @@ -49,12 +49,12 @@ 1.18.42 4.7.2.1 4.7.2 - 3.2.1 + 3.5.0 1.15 3.19.0 0.11.5 1.21.3 - 3.3.0 + 3.4.2 1.5.1 4.2.0 5.6.0 @@ -269,7 +269,7 @@ com.puppycrawl.tools checkstyle - 10.6.0 + 10.26.1 @@ -286,7 +286,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M3 + 3.0.0 -XX:+ExitOnOutOfMemoryError false From ad12e2c2b3328a7f7ed107b64d4620c1bb15746c Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Tue, 28 Oct 2025 12:26:18 +0530 Subject: [PATCH 33/69] K8s 1.33 Support (#211) * platform matching the quarkus-sdk version * Test changes for passing compilation * Test K8s version upgrade * move map properties out of the base class There seems to be a bug in the new crd-generator that causes inherited Map properties to fail during generation with an array index out of bounds. * remove map fields from BaseComponentSpec * update CRDs and docs * upgrade migration tool test The new libraries cause some minor differences in the generated manifests. --------- Co-authored-by: Paul Gier --- docs/api-reference.md | 769 +++++++++++++++++- ...utorecoveries.kaap.oss.datastax.com-v1.yml | 10 + .../bastions.kaap.oss.datastax.com-v1.yml | 10 + .../bookkeepers.kaap.oss.datastax.com-v1.yml | 34 + .../crds/brokers.kaap.oss.datastax.com-v1.yml | 38 + ...ctionsworkers.kaap.oss.datastax.com-v1.yml | 17 + .../crds/proxies.kaap.oss.datastax.com-v1.yml | 38 + ...ulsarclusters.kaap.oss.datastax.com-v1.yml | 166 ++++ .../zookeepers.kaap.oss.datastax.com-v1.yml | 19 + .../PulsarClusterResourceGeneratorTest.java | 170 ++-- .../oss/kaap/mocks/MockKubeServer.java | 49 -- .../oss/kaap/mocks/MockKubernetesClient.java | 5 - operator/pom.xml | 4 +- .../kaap/controllers/AbstractController.java | 4 +- .../oss/kaap/crds/BaseComponentSpec.java | 14 - .../crds/bookkeeper/BookKeeperSetSpec.java | 13 + .../oss/kaap/crds/broker/BrokerSetSpec.java | 13 + .../crds/function/FunctionsWorkerSpec.java | 13 + .../oss/kaap/crds/proxy/ProxySetSpec.java | 13 + .../kaap/crds/zookeeper/ZooKeeperSpec.java | 13 + .../autoscaler/BookKeeperAutoscalerTest.java | 463 ++++++----- .../kaap/autoscaler/BrokerAutoscalerTest.java | 367 ++++----- .../LoadReportResourceUsageSourceTest.java | 290 +++---- .../kaap/controllers/ControllerTestUtil.java | 11 +- .../oss/kaap/controllers/KubeTestUtil.java | 4 +- .../PulsarClusterControllerTest.java | 21 +- .../BookKeeperSetsControllerTest.java | 74 +- .../broker/BrokerSetsControllerTest.java | 64 +- .../proxy/ProxySetsControllerTest.java | 64 +- ...ertManagerCertificatesProvisionerTest.java | 3 +- .../zookeeper/ZooKeeperControllerTest.java | 4 +- .../zookeeper/ZooKeeperJobTest.java | 194 ++--- pom.xml | 15 +- tests/pom.xml | 2 +- .../oss/kaap/tests/LocalK8sEnvironment.java | 2 +- .../tests/env/k3s/AbstractK3sContainer.java | 4 +- 36 files changed, 2008 insertions(+), 986 deletions(-) delete mode 100644 operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubeServer.java diff --git a/docs/api-reference.md b/docs/api-reference.md index 3397c58a..0c1dd435 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -1235,6 +1235,13 @@ Indicates the provisioner property for the StorageClass.
false + + stopSignal + string + +
+ + false @@ -2362,6 +2369,13 @@ Indicates the provisioner property for the StorageClass.
false + + request + string + +
+ + false @@ -3411,6 +3425,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -4038,6 +4059,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + stopSignal + string + +
+ + false @@ -5165,6 +5193,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + request + string + +
+ + false @@ -6990,6 +7025,13 @@ Indicates the provisioner property for the StorageClass.
false + + stopSignal + string + +
+ + false @@ -8117,6 +8159,13 @@ Indicates the provisioner property for the StorageClass.
false + + request + string + +
+ + false @@ -9166,6 +9215,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -9793,6 +9849,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + stopSignal + string + +
+ + false @@ -10920,6 +10983,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control.
false + + request + string + +
+ + false @@ -12144,6 +12214,13 @@ Mount additional volumes to the pod.
false + + image + object + +
+ + false iscsi object @@ -13814,6 +13891,39 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.bookkeeper.additionalVolumes.volumes[index].image + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
pullPolicystring +
+
false
referencestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.additionalVolumes.volumes[index].iscsi @@ -16202,6 +16312,13 @@ Autoscaling config.
false + + stopSignal + string + +
+ + false @@ -17329,6 +17446,13 @@ Autoscaling config.
false + + request + string + +
+ + false @@ -18587,6 +18711,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -19226,6 +19357,13 @@ Mount additional volumes to the pod.
false + + image + object + +
+ + false iscsi object @@ -20896,6 +21034,39 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.bookkeeper.sets[key].additionalVolumes.volumes[index].image + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
pullPolicystring +
+
false
referencestring +
+
false
+ + ### PulsarCluster.spec.bookkeeper.sets[key].additionalVolumes.volumes[index].iscsi @@ -23242,6 +23413,13 @@ Autoscaling config.
false + + stopSignal + string + +
+ + false @@ -24369,6 +24547,13 @@ Autoscaling config.
false + + request + string + +
+ + false @@ -25627,6 +25812,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -26348,6 +26540,13 @@ Service configuration.
false + + stopSignal + string + +
+ + false @@ -27475,6 +27674,13 @@ Service configuration.
false + + request + string + +
+ + false @@ -29061,6 +29267,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + stopSignal + string + +
+ + false @@ -30188,6 +30401,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + request + string + +
+ + false @@ -31706,6 +31926,13 @@ Mount additional volumes to the pod.
false + + image + object + +
+ + false iscsi object @@ -33376,6 +33603,39 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.broker.additionalVolumes.volumes[index].image + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
pullPolicystring +
+
false
referencestring +
+
false
+ + ### PulsarCluster.spec.broker.additionalVolumes.volumes[index].iscsi @@ -35727,6 +35987,13 @@ Autoscaling config.
false + + stopSignal + string + +
+ + false @@ -36854,6 +37121,13 @@ Autoscaling config.
false + + request + string + +
+ + false @@ -38159,6 +38433,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -38805,6 +39086,13 @@ Mount additional volumes to the pod.
false + + image + object + +
+ + false iscsi object @@ -40475,6 +40763,39 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.broker.sets[key].additionalVolumes.volumes[index].image + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
pullPolicystring +
+
false
referencestring +
+
false
+ + ### PulsarCluster.spec.broker.sets[key].additionalVolumes.volumes[index].iscsi @@ -42826,6 +43147,13 @@ Autoscaling config.
false + + stopSignal + string + +
+ + false @@ -43953,6 +44281,13 @@ Autoscaling config.
false + + request + string + +
+ + false @@ -45258,6 +45593,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -45986,6 +46328,13 @@ Service configuration.
false + + stopSignal + string + +
+ + false @@ -47113,6 +47462,13 @@ Service configuration.
false + + request + string + +
+ + false @@ -47964,6 +48320,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -48596,6 +48959,13 @@ Update strategy for the StatefulSet.
false + + stopSignal + string + +
+ + false @@ -49723,6 +50093,13 @@ Update strategy for the StatefulSet.
false + + request + string + +
+ + false @@ -50574,6 +50951,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -51110,6 +51494,13 @@ Mount additional volumes to the pod.
false + + image + object + +
+ + false iscsi object @@ -52780,6 +53171,39 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.functionsWorker.additionalVolumes.volumes[index].image + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
pullPolicystring +
+
false
referencestring +
+
false
+ + ### PulsarCluster.spec.functionsWorker.additionalVolumes.volumes[index].iscsi @@ -55026,6 +55450,13 @@ Indicates the provisioner property for the StorageClass.
false + + stopSignal + string + +
+ + false @@ -56153,6 +56584,13 @@ Indicates the provisioner property for the StorageClass.
false + + request + string + +
+ + false @@ -57545,6 +57983,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -58211,7 +58656,40 @@ Service configuration. -### PulsarCluster.spec.functionsWorker.sidecars[index].envFrom[index].secretRef +### PulsarCluster.spec.functionsWorker.sidecars[index].envFrom[index].secretRef + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
namestring +
+
false
optionalboolean +
+
false
+ + +### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle @@ -58227,48 +58705,22 @@ Service configuration. - name - string + postStart + object
false - optional - boolean - -
- - false - - - - -### PulsarCluster.spec.functionsWorker.sidecars[index].lifecycle - - - - - - - - - - - - - - - - + - - + + @@ -59400,6 +59852,13 @@ Service configuration.
+ + + + +
NameTypeDescriptionRequired
postStartpreStop object
false
preStopobjectstopSignalstring
false
requeststring +
+
false
@@ -62670,6 +63129,13 @@ Mount additional volumes to the pod.
false + + image + object + +
+ + false iscsi object @@ -64340,6 +64806,39 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.proxy.additionalVolumes.volumes[index].image + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
pullPolicystring +
+
false
referencestring +
+
false
+ + ### PulsarCluster.spec.proxy.additionalVolumes.volumes[index].iscsi @@ -66586,6 +67085,13 @@ Indicates the provisioner property for the StorageClass.
false + + stopSignal + string + +
+ + false @@ -67713,6 +68219,13 @@ Indicates the provisioner property for the StorageClass.
false + + request + string + +
+ + false @@ -69004,6 +69517,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -69657,6 +70177,13 @@ Mount additional volumes to the pod.
false + + image + object + +
+ + false iscsi object @@ -71327,6 +71854,39 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.proxy.sets[key].additionalVolumes.volumes[index].image + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
pullPolicystring +
+
false
referencestring +
+
false
+ + ### PulsarCluster.spec.proxy.sets[key].additionalVolumes.volumes[index].iscsi @@ -73573,6 +74133,13 @@ Indicates the provisioner property for the StorageClass.
false + + stopSignal + string + +
+ + false @@ -74700,6 +75267,13 @@ Indicates the provisioner property for the StorageClass.
false + + request + string + +
+ + false @@ -75991,6 +76565,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -76740,6 +77321,13 @@ Service configuration.
false + + stopSignal + string + +
+ + false @@ -77867,6 +78455,13 @@ Service configuration.
false + + request + string + +
+ + false @@ -78934,6 +79529,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -79500,6 +80102,13 @@ Resources requirements.
false + + stopSignal + string + +
+ + false @@ -80627,6 +81236,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -81694,6 +82310,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -82157,6 +82780,13 @@ Mount additional volumes to the pod.
false + + image + object + +
+ + false iscsi object @@ -83827,6 +84457,39 @@ Mount additional volumes to the pod. +### PulsarCluster.spec.zookeeper.additionalVolumes.volumes[index].image + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
pullPolicystring +
+
false
referencestring +
+
false
+ + ### PulsarCluster.spec.zookeeper.additionalVolumes.volumes[index].iscsi @@ -86174,6 +86837,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + stopSignal + string + +
+ + false @@ -87301,6 +87971,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i
false + + request + string + +
+ + false @@ -88065,6 +88742,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -88658,6 +89342,13 @@ Resources requirements.
false + + request + string + +
+ + false @@ -89379,6 +90070,13 @@ Service configuration.
false + + stopSignal + string + +
+ + false @@ -90506,6 +91204,13 @@ Service configuration.
false + + request + string + +
+ + false diff --git a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml index 5e050900..332ac1e8 100644 --- a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml @@ -312,6 +312,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -470,6 +472,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -767,6 +771,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -990,6 +996,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1148,6 +1156,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: diff --git a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml index 8d8e3fa4..98790279 100644 --- a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml @@ -312,6 +312,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -470,6 +472,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -767,6 +771,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -990,6 +996,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1148,6 +1156,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: diff --git a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml index 6d91fb03..9efe0ae1 100644 --- a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml @@ -425,6 +425,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -1086,6 +1093,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1244,6 +1253,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -1625,6 +1636,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2102,6 +2115,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -2754,6 +2774,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -2912,6 +2934,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -3294,6 +3318,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -3547,6 +3573,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -3705,6 +3733,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -4208,6 +4238,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -4366,6 +4398,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: diff --git a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml index 9b181c4a..b654aa1c 100644 --- a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml @@ -425,6 +425,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -1075,6 +1082,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1233,6 +1242,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -1630,6 +1641,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2110,6 +2123,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -2764,6 +2784,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -2922,6 +2944,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -3320,6 +3344,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -3576,6 +3602,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -3734,6 +3762,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -3956,6 +3986,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -4185,6 +4217,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -4343,6 +4377,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -4564,6 +4600,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: diff --git a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml index 9f685961..e75c68c0 100644 --- a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml @@ -427,6 +427,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -1013,6 +1020,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1171,6 +1180,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -1598,6 +1609,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -1857,6 +1870,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -2015,6 +2030,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: diff --git a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml index 21769e24..b245542f 100644 --- a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml @@ -1135,6 +1135,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -1721,6 +1728,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1879,6 +1888,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2265,6 +2276,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2755,6 +2768,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -3343,6 +3363,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -3501,6 +3523,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -3888,6 +3912,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -4154,6 +4180,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -4312,6 +4340,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -4618,6 +4648,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -4827,6 +4859,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -4985,6 +5019,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -5291,6 +5327,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: diff --git a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml index 69bc8450..073ada27 100644 --- a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml @@ -311,6 +311,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -469,6 +471,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -766,6 +770,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -989,6 +995,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1147,6 +1155,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -1643,6 +1653,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1801,6 +1813,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2098,6 +2112,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2321,6 +2337,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -2479,6 +2497,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -3093,6 +3113,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -3754,6 +3781,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -3912,6 +3941,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -4293,6 +4324,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -4770,6 +4803,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -5422,6 +5462,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -5580,6 +5622,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -5962,6 +6006,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -6215,6 +6261,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -6373,6 +6421,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -6876,6 +6926,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -7034,6 +7086,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -7749,6 +7803,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -8399,6 +8460,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -8557,6 +8620,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -8954,6 +9019,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -9434,6 +9501,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -10088,6 +10162,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -10246,6 +10322,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -10644,6 +10722,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -10900,6 +10980,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -11058,6 +11140,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -11280,6 +11364,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -11509,6 +11595,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -11667,6 +11755,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -11888,6 +11978,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -12333,6 +12425,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -12919,6 +13018,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -13077,6 +13178,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -13504,6 +13607,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -13763,6 +13868,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -13921,6 +14028,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -15257,6 +15366,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -15843,6 +15959,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -16001,6 +16119,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -16387,6 +16507,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -16877,6 +16999,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -17465,6 +17594,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -17623,6 +17754,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -18010,6 +18143,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -18276,6 +18411,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -18434,6 +18571,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -18740,6 +18879,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -18949,6 +19090,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -19107,6 +19250,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -19413,6 +19558,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -19838,6 +19985,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -20465,6 +20619,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -20623,6 +20779,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -20832,6 +20990,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -21032,6 +21192,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -21285,6 +21447,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -21443,6 +21607,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: diff --git a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml index 5de8956f..a3d7b677 100644 --- a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml @@ -1135,6 +1135,13 @@ spec: type: type: "string" type: "object" + image: + properties: + pullPolicy: + type: "string" + reference: + type: "string" + type: "object" iscsi: properties: chapAuthDiscovery: @@ -1762,6 +1769,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -1920,6 +1929,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2129,6 +2140,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2329,6 +2342,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: @@ -2582,6 +2597,8 @@ spec: x-kubernetes-int-or-string: true type: "object" type: "object" + stopSignal: + type: "string" type: "object" livenessProbe: properties: @@ -2740,6 +2757,8 @@ spec: properties: name: type: "string" + request: + type: "string" type: "object" type: "array" limits: diff --git a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java index 91ef78f4..565d2b33 100644 --- a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java +++ b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java @@ -178,7 +178,6 @@ private void assertValue(File tmpDir) { zookeeper: image: pulsar:latest imagePullPolicy: IfNotPresent - nodeSelectors: {} replicas: 3 pdb: enabled: true @@ -190,6 +189,12 @@ private void assertValue(File tmpDir) { required: true zone: enabled: false + imagePullSecrets: [] + env: [] + sidecars: [] + initContainers: [] + securityContext: + fsGroup: 0 annotations: {} podAnnotations: prometheus.io/port: 8000 @@ -212,12 +217,7 @@ private void assertValue(File tmpDir) { cluster: "" component: zookeeper release: pulsar-cluster - imagePullSecrets: [] - env: [] - sidecars: [] - initContainers: [] - securityContext: - fsGroup: 0 + nodeSelectors: {} config: PULSAR_EXTRA_OPTS: -Dpulsar.log.root.level=info PULSAR_GC: -XX:+UseG1GC -XX:MaxGCPauseMillis=10 @@ -262,7 +262,6 @@ private void assertValue(File tmpDir) { bookkeeper: image: pulsar:latest imagePullPolicy: IfNotPresent - nodeSelectors: {} replicas: 3 pdb: enabled: true @@ -274,28 +273,6 @@ private void assertValue(File tmpDir) { required: false zone: enabled: false - annotations: {} - podAnnotations: - prometheus.io/port: 8000 - prometheus.io/scrape: "true" - labels: - app: pulsar - app.kubernetes.io/managed-by: Helm - chart: pulsar-1.0.32 - cluster: pulsar-cluster - component: bookkeeper - heritage: Helm - release: pulsar-cluster - podLabels: - app: pulsar - cluster: pulsar-cluster - component: bookkeeper - release: pulsar-cluster - matchLabels: - app: pulsar - cluster: "" - component: bookkeeper - release: pulsar-cluster imagePullSecrets: [] env: [] sidecars: [] @@ -331,6 +308,29 @@ private void assertValue(File tmpDir) { terminationMessagePolicy: File securityContext: fsGroup: 0 + annotations: {} + podAnnotations: + prometheus.io/port: 8000 + prometheus.io/scrape: "true" + labels: + app: pulsar + app.kubernetes.io/managed-by: Helm + chart: pulsar-1.0.32 + cluster: pulsar-cluster + component: bookkeeper + heritage: Helm + release: pulsar-cluster + podLabels: + app: pulsar + cluster: pulsar-cluster + component: bookkeeper + release: pulsar-cluster + matchLabels: + app: pulsar + cluster: "" + component: bookkeeper + release: pulsar-cluster + nodeSelectors: {} config: BOOKIE_GC: -XX:+UseG1GC -XX:MaxGCPauseMillis=10 BOOKIE_MEM: -Xms4g -Xmx4g -XX:MaxDirectMemorySize=4g -Dio.netty.leakDetectionLevel=disabled -Dio.netty.recycler.linkCapacity=1024 -XX:+ParallelRefProcEnabled -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:ParallelGCThreads=32 -XX:ConcGCThreads=32 -XX:G1NewSizePercent=50 -XX:+DisableExplicitGC -XX:-ResizePLAB -XX:+ExitOnOutOfMemoryError -XX:+PerfDisableSharedMem @@ -420,7 +420,6 @@ private void assertValue(File tmpDir) { broker: image: pulsar:latest imagePullPolicy: IfNotPresent - nodeSelectors: {} replicas: 3 pdb: enabled: true @@ -432,29 +431,6 @@ private void assertValue(File tmpDir) { required: false zone: enabled: false - annotations: {} - podAnnotations: - prometheus.io/path: /metrics/ - prometheus.io/port: 8080 - prometheus.io/scrape: "true" - labels: - app: pulsar - app.kubernetes.io/managed-by: Helm - chart: pulsar-1.0.32 - cluster: pulsar-cluster - component: broker - heritage: Helm - release: pulsar-cluster - podLabels: - app: pulsar - cluster: pulsar-cluster - component: broker - release: pulsar-cluster - matchLabels: - app: pulsar - cluster: "" - component: broker - release: pulsar-cluster imagePullSecrets: [] env: - name: PULSAR_PREFIX_kafkaAdvertisedListeners @@ -487,6 +463,30 @@ private void assertValue(File tmpDir) { resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File + annotations: {} + podAnnotations: + prometheus.io/path: /metrics/ + prometheus.io/port: 8080 + prometheus.io/scrape: "true" + labels: + app: pulsar + app.kubernetes.io/managed-by: Helm + chart: pulsar-1.0.32 + cluster: pulsar-cluster + component: broker + heritage: Helm + release: pulsar-cluster + podLabels: + app: pulsar + cluster: pulsar-cluster + component: broker + release: pulsar-cluster + matchLabels: + app: pulsar + cluster: "" + component: broker + release: pulsar-cluster + nodeSelectors: {} config: PF_clientAuthenticationParameters: file:///pulsar/token-superuser/superuser.jwt PF_clientAuthenticationPlugin: org.apache.pulsar.client.impl.auth.AuthenticationToken @@ -622,7 +622,6 @@ private void assertValue(File tmpDir) { proxy: image: pulsar:latest imagePullPolicy: IfNotPresent - nodeSelectors: {} replicas: 1 pdb: enabled: true @@ -634,29 +633,6 @@ private void assertValue(File tmpDir) { required: false zone: enabled: false - annotations: {} - podAnnotations: - prometheus.io/path: /metrics/ - prometheus.io/port: 8080 - prometheus.io/scrape: "true" - labels: - app: pulsar - app.kubernetes.io/managed-by: Helm - chart: pulsar-1.0.32 - cluster: pulsar-cluster - component: proxy - heritage: Helm - release: pulsar-cluster - podLabels: - app: pulsar - cluster: pulsar-cluster - component: proxy - release: pulsar-cluster - matchLabels: - app: pulsar - cluster: "" - component: proxy - release: pulsar-cluster imagePullSecrets: [] env: - name: PULSAR_PREFIX_brokerProxyAllowedHostNames @@ -756,6 +732,30 @@ private void assertValue(File tmpDir) { resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File + annotations: {} + podAnnotations: + prometheus.io/path: /metrics/ + prometheus.io/port: 8080 + prometheus.io/scrape: "true" + labels: + app: pulsar + app.kubernetes.io/managed-by: Helm + chart: pulsar-1.0.32 + cluster: pulsar-cluster + component: proxy + heritage: Helm + release: pulsar-cluster + podLabels: + app: pulsar + cluster: pulsar-cluster + component: proxy + release: pulsar-cluster + matchLabels: + app: pulsar + cluster: "" + component: proxy + release: pulsar-cluster + nodeSelectors: {} config: PULSAR_EXTRA_CLASSPATH: /jars/pulsar-libs/* PULSAR_EXTRA_OPTS: -Dpulsar.log.root.level=info @@ -993,7 +993,6 @@ private void assertValue(File tmpDir) { functionsWorker: image: pulsar:latest imagePullPolicy: IfNotPresent - nodeSelectors: {} replicas: 1 pdb: enabled: true @@ -1005,6 +1004,12 @@ private void assertValue(File tmpDir) { required: true zone: enabled: false + imagePullSecrets: [] + env: [] + sidecars: [] + initContainers: [] + securityContext: + fsGroup: 0 annotations: {} podAnnotations: prometheus.io/port: 6750 @@ -1027,12 +1032,7 @@ private void assertValue(File tmpDir) { cluster: "" component: function release: pulsar-cluster - imagePullSecrets: [] - env: [] - sidecars: [] - initContainers: [] - securityContext: - fsGroup: 0 + nodeSelectors: {} config: PF_authenticateMetricsEndpoint: "false" PULSAR_EXTRA_OPTS: -Dpulsar.log.root.level=info diff --git a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubeServer.java b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubeServer.java deleted file mode 100644 index a3de7c69..00000000 --- a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubeServer.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright DataStax, Inc. - * - * 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. - */ -package com.datastax.oss.kaap.mocks; - -import io.fabric8.kubernetes.client.NamespacedKubernetesClient; -import io.fabric8.kubernetes.client.okhttp.OkHttpClientFactory; -import io.fabric8.kubernetes.client.server.mock.KubernetesServer; -import java.util.concurrent.atomic.AtomicReference; - -public class MockKubeServer extends KubernetesServer { - - private AtomicReference client = new AtomicReference(null); - - public MockKubeServer() { - super(false); - } - - @Override - public void before() { - super.before(); - client.set(getKubernetesMockServer().createClient(new OkHttpClientFactory())); - } - - @Override - public NamespacedKubernetesClient getClient() { - return client.get(); - } - - @Override - public void after() { - super.after(); - if (client.get() != null) { - client.get().close(); - } - } -} diff --git a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java index b56f6269..a08c62e3 100644 --- a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java +++ b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java @@ -426,9 +426,4 @@ public ResourceInteraction getDeletedResource(Class T readYaml(String yaml, Class toClass) { - return SerializationUtil.readYaml(yaml, toClass); - } } diff --git a/operator/pom.xml b/operator/pom.xml index 6fe8a283..a0d5d7cd 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -27,7 +27,7 @@ kaap-operator - 3.28.5 + 3.27.0 true true @@ -45,7 +45,7 @@
io.fabric8 - certmanager-model-v1 + certmanager-model io.quarkiverse.operatorsdk diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/AbstractController.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/AbstractController.java index b8f86b36..ea1921aa 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/AbstractController.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/AbstractController.java @@ -128,7 +128,7 @@ public UpdateControl reconcile(T resource, Context context) throws Excepti resource, CRDConstants.CONDITIONS_TYPE_READY_REASON_INVALID_SPEC, validationErrorMessage )), Instant.now()); resource.setStatus(new BaseComponentStatus(conditions, lastApplied)); - return UpdateControl.updateStatus(resource); + return UpdateControl.patchStatus(resource); } @@ -174,7 +174,7 @@ public UpdateControl reconcile(T resource, Context context) throws Excepti time, reschedule + "", conditionsStr); resource.setStatus(new BaseComponentStatus(conditions, lastApplied)); - final UpdateControl update = UpdateControl.updateStatus(resource); + final UpdateControl update = UpdateControl.patchStatus(resource); if (reschedule) { update.rescheduleAfter(operatorRuntimeConfiguration.reconciliationRescheduleSeconds(), TimeUnit.SECONDS); } diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java index 29a74dd9..50213cfd 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java @@ -27,7 +27,6 @@ import io.fabric8.kubernetes.api.model.NodeAffinity; import io.fabric8.kubernetes.api.model.Toleration; import java.util.List; -import java.util.Map; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -46,8 +45,6 @@ public abstract class BaseComponentSpec extends ValidableSpec implements W protected String image; @JsonPropertyDescription(CRDConstants.DOC_IMAGE_PULL_POLICY) private String imagePullPolicy; - @JsonPropertyDescription(CRDConstants.DOC_NODE_SELECTORS) - protected Map nodeSelectors; @JsonPropertyDescription(CRDConstants.DOC_REPLICAS) protected Integer replicas; @JsonPropertyDescription("Pod disruption budget configuration.") @@ -60,16 +57,6 @@ public abstract class BaseComponentSpec extends ValidableSpec implements W private NodeAffinity nodeAffinity; @JsonPropertyDescription(CRDConstants.DOC_ANTIAFFINITY) private AntiAffinityConfig antiAffinity; - @JsonPropertyDescription(CRDConstants.DOC_ANNOTATIONS) - private Map annotations; - @JsonPropertyDescription(CRDConstants.DOC_POD_ANNOTATIONS) - private Map podAnnotations; - @JsonPropertyDescription(CRDConstants.DOC_LABELS) - private Map labels; - @JsonPropertyDescription(CRDConstants.DOC_POD_LABELS) - private Map podLabels; - @JsonPropertyDescription(CRDConstants.DOC_POD_MATCH_LABELS) - private Map matchLabels; @JsonPropertyDescription(CRDConstants.DOC_IMAGE_PULL_SECRETS) private List imagePullSecrets; @JsonPropertyDescription(CRDConstants.DOC_CONTAINER_ENV) @@ -88,7 +75,6 @@ public void applyDefaults(GlobalSpec globalSpec) { if (image == null) { image = globalSpec.getImage(); } - nodeSelectors = ConfigUtil.mergeMaps(globalSpec.getNodeSelectors(), nodeSelectors); if (imagePullPolicy == null) { imagePullPolicy = globalSpec.getImagePullPolicy(); } diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java index b80b4d3b..ca9fc48f 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bookkeeper/BookKeeperSetSpec.java @@ -127,6 +127,18 @@ public static class ServiceConfig { } + @JsonPropertyDescription(CRDConstants.DOC_ANNOTATIONS) + private Map annotations; + @JsonPropertyDescription(CRDConstants.DOC_POD_ANNOTATIONS) + private Map podAnnotations; + @JsonPropertyDescription(CRDConstants.DOC_LABELS) + private Map labels; + @JsonPropertyDescription(CRDConstants.DOC_POD_LABELS) + private Map podLabels; + @JsonPropertyDescription(CRDConstants.DOC_POD_MATCH_LABELS) + private Map matchLabels; + @JsonPropertyDescription(CRDConstants.DOC_NODE_SELECTORS) + protected Map nodeSelectors; @JsonPropertyDescription(CRDConstants.DOC_CONFIG) // workaround to generate CRD spec that accepts any type as key @SchemaFrom(type = JsonNode.class) @@ -160,6 +172,7 @@ public static class ServiceConfig { @Override public void applyDefaults(GlobalSpec globalSpec) { super.applyDefaults(globalSpec); + nodeSelectors = ConfigUtil.mergeMaps(globalSpec.getNodeSelectors(), nodeSelectors); super.applyFsGroup0IfSecurityContextMissing(); if (replicas == null) { replicas = 3; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSetSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSetSpec.java index 74e76760..2a27783d 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSetSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/broker/BrokerSetSpec.java @@ -169,6 +169,18 @@ public static class TransactionCoordinatorInitJobConfig { private ResourceRequirements resources; } + @JsonPropertyDescription(CRDConstants.DOC_ANNOTATIONS) + private Map annotations; + @JsonPropertyDescription(CRDConstants.DOC_POD_ANNOTATIONS) + private Map podAnnotations; + @JsonPropertyDescription(CRDConstants.DOC_LABELS) + private Map labels; + @JsonPropertyDescription(CRDConstants.DOC_POD_LABELS) + private Map podLabels; + @JsonPropertyDescription(CRDConstants.DOC_POD_MATCH_LABELS) + private Map matchLabels; + @JsonPropertyDescription(CRDConstants.DOC_NODE_SELECTORS) + protected Map nodeSelectors; @JsonPropertyDescription(CRDConstants.DOC_CONFIG) // workaround to generate CRD spec that accepts any type as key @SchemaFrom(type = JsonNode.class) @@ -203,6 +215,7 @@ public static class TransactionCoordinatorInitJobConfig { @Override public void applyDefaults(GlobalSpec globalSpec) { super.applyDefaults(globalSpec); + nodeSelectors = ConfigUtil.mergeMaps(globalSpec.getNodeSelectors(), nodeSelectors); if (gracePeriod == null) { gracePeriod = 60; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java index c7beda38..60c422a4 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/function/FunctionsWorkerSpec.java @@ -116,6 +116,18 @@ public static class ServiceConfig { private String type; } + @JsonPropertyDescription(CRDConstants.DOC_ANNOTATIONS) + private Map annotations; + @JsonPropertyDescription(CRDConstants.DOC_POD_ANNOTATIONS) + private Map podAnnotations; + @JsonPropertyDescription(CRDConstants.DOC_LABELS) + private Map labels; + @JsonPropertyDescription(CRDConstants.DOC_POD_LABELS) + private Map podLabels; + @JsonPropertyDescription(CRDConstants.DOC_POD_MATCH_LABELS) + private Map matchLabels; + @JsonPropertyDescription(CRDConstants.DOC_NODE_SELECTORS) + protected Map nodeSelectors; @JsonPropertyDescription(CRDConstants.DOC_CONFIG) // workaround to generate CRD spec that accepts any type as key @SchemaFrom(type = JsonNode.class) @@ -144,6 +156,7 @@ public static class ServiceConfig { @Override public void applyDefaults(GlobalSpec globalSpec) { super.applyDefaults(globalSpec); + nodeSelectors = ConfigUtil.mergeMaps(globalSpec.getNodeSelectors(), nodeSelectors); super.applyFsGroup0IfSecurityContextMissing(); if (replicas == null) { diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java index 1051fed4..81708b95 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/proxy/ProxySetSpec.java @@ -141,6 +141,18 @@ public static class WebSocketConfig { private ProbesConfig probes; } + @JsonPropertyDescription(CRDConstants.DOC_ANNOTATIONS) + private Map annotations; + @JsonPropertyDescription(CRDConstants.DOC_POD_ANNOTATIONS) + private Map podAnnotations; + @JsonPropertyDescription(CRDConstants.DOC_LABELS) + private Map labels; + @JsonPropertyDescription(CRDConstants.DOC_POD_LABELS) + private Map podLabels; + @JsonPropertyDescription(CRDConstants.DOC_POD_MATCH_LABELS) + private Map matchLabels; + @JsonPropertyDescription(CRDConstants.DOC_NODE_SELECTORS) + protected Map nodeSelectors; @JsonPropertyDescription(CRDConstants.DOC_CONFIG) // workaround to generate CRD spec that accepts any type as key @SchemaFrom(type = JsonNode.class) @@ -169,6 +181,7 @@ public static class WebSocketConfig { @Override public void applyDefaults(GlobalSpec globalSpec) { super.applyDefaults(globalSpec); + nodeSelectors = ConfigUtil.mergeMaps(globalSpec.getNodeSelectors(), nodeSelectors); if (replicas == null) { replicas = 3; } diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java index 5e503b44..654d6312 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/zookeeper/ZooKeeperSpec.java @@ -110,6 +110,18 @@ public static class MetadataInitializationJobConfig { private int timeout; } + @JsonPropertyDescription(CRDConstants.DOC_ANNOTATIONS) + private Map annotations; + @JsonPropertyDescription(CRDConstants.DOC_POD_ANNOTATIONS) + private Map podAnnotations; + @JsonPropertyDescription(CRDConstants.DOC_LABELS) + private Map labels; + @JsonPropertyDescription(CRDConstants.DOC_POD_LABELS) + private Map podLabels; + @JsonPropertyDescription(CRDConstants.DOC_POD_MATCH_LABELS) + private Map matchLabels; + @JsonPropertyDescription(CRDConstants.DOC_NODE_SELECTORS) + protected Map nodeSelectors; @JsonPropertyDescription(CRDConstants.DOC_CONFIG) // workaround to generate CRD spec that accepts any type as key @SchemaFrom(type = JsonNode.class) @@ -137,6 +149,7 @@ public static class MetadataInitializationJobConfig { @Override public void applyDefaults(GlobalSpec globalSpec) { super.applyDefaults(globalSpec); + nodeSelectors = ConfigUtil.mergeMaps(globalSpec.getNodeSelectors(), nodeSelectors); super.applyFsGroup0IfSecurityContextMissing(); if (podManagementPolicy == null) { podManagementPolicy = "Parallel"; diff --git a/operator/src/test/java/com/datastax/oss/kaap/autoscaler/BookKeeperAutoscalerTest.java b/operator/src/test/java/com/datastax/oss/kaap/autoscaler/BookKeeperAutoscalerTest.java index aac4faea..ad4296f8 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/autoscaler/BookKeeperAutoscalerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/autoscaler/BookKeeperAutoscalerTest.java @@ -17,13 +17,13 @@ import com.datastax.oss.kaap.autoscaler.bookkeeper.BookieAdminClient; import com.datastax.oss.kaap.autoscaler.bookkeeper.PodExecBookieAdminClient; +import com.datastax.oss.kaap.common.SerializationUtil; import com.datastax.oss.kaap.controllers.bookkeeper.BookKeeperResourcesFactory; import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.bookkeeper.BookKeeper; import com.datastax.oss.kaap.crds.bookkeeper.BookKeeperFullSpec; import com.datastax.oss.kaap.crds.bookkeeper.BookKeeperSetSpec; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; -import com.datastax.oss.kaap.mocks.MockKubernetesClient; import com.fasterxml.jackson.databind.ObjectMapper; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ContainerStatusBuilder; @@ -43,10 +43,11 @@ import io.fabric8.kubernetes.api.model.metrics.v1beta1.PodMetricsListBuilder; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.dsl.PodResource; -import io.fabric8.kubernetes.client.server.mock.KubernetesServer; +import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; +import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import io.fabric8.kubernetes.client.server.mock.OutputStreamMessage; +import io.fabric8.mockwebserver.http.RecordedRequest; import io.fabric8.mockwebserver.utils.BodyProvider; -import java.io.ByteArrayOutputStream; import java.lang.reflect.Field; import java.net.HttpURLConnection; import java.net.URLEncoder; @@ -61,192 +62,205 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.function.Consumer; import java.util.function.Function; -import lombok.Builder; import lombok.Data; import lombok.SneakyThrows; -import okhttp3.mockwebserver.RecordedRequest; import org.apache.commons.lang3.tuple.Pair; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import org.testng.Assert; -import org.testng.annotations.Test; +@EnableKubernetesMockClient(https = false) public class BookKeeperAutoscalerTest { private static final String NAMESPACE = "ns"; - @Builder(setterPrefix = "with") - public static class MockServer implements AutoCloseable { + KubernetesMockServer server; + KubernetesClient client; - @FunctionalInterface - public interface PodConsumer { - - void accept(Pod pod, PodMetrics metrics, int index); - } - - private PulsarClusterSpec pulsarClusterSpec; - private PodConsumer podConsumer; - private Consumer stsConsumer; - KubernetesServer server; - - PatchOp patchOp; - - @Data - public static class PatchOp { - String op; - String path; - Object value; - } - - @SneakyThrows - void start() { - pulsarClusterSpec.getGlobal().applyDefaults(null); - pulsarClusterSpec.getBookkeeper().applyDefaults(pulsarClusterSpec.getGlobalSpec()); - - final BookKeeper bkCr = new BookKeeper(); - bkCr.setSpec(BookKeeperFullSpec.builder() - .global(pulsarClusterSpec.getGlobal()) - .bookkeeper(pulsarClusterSpec.getBookkeeper()) - .build()); - - final String clusterSpecName = pulsarClusterSpec.getGlobal().getName(); - - server = new KubernetesServer(false); - server.before(); - - final int replicas = pulsarClusterSpec.getBookkeeper().getReplicas(); - - final BookKeeperResourcesFactory bkResourcesFactory = - new BookKeeperResourcesFactory(null, NAMESPACE, BookKeeperResourcesFactory.BOOKKEEPER_DEFAULT_SET, - pulsarClusterSpec.getBookkeeper(), - pulsarClusterSpec.getGlobal(), null); - - final Field field = bkResourcesFactory.getClass().getDeclaredField("configMap"); - field.setAccessible(true); - field.set(bkResourcesFactory, new ConfigMapBuilder().build()); - final StatefulSet sts = bkResourcesFactory.generateStatefulSet(); - sts.setStatus(new StatefulSetStatusBuilder() - .withReplicas(replicas) - .withReadyReplicas(replicas) - .withUpdatedReplicas(replicas) - .withCurrentRevision("rev") - .withUpdateRevision("rev") - .build()); - - stsConsumer.accept(sts); + @FunctionalInterface + public interface PodConsumer { + void accept(Pod pod, PodMetrics metrics, int index); + } - server.expect() - .get() - .withPath("/apis/apps/v1/namespaces/ns/statefulsets/%s-bookkeeper".formatted(clusterSpecName)) - .andReturn(HttpURLConnection.HTTP_OK, sts) - .once(); + @Data + public static class PatchOp { + String op; + String path; + Object value; + } - server.expect() - .get() - .withPath( - "/apis/kaap.oss.datastax.com/v1beta1/namespaces/ns/bookkeepers/%s-bookkeeper".formatted( - clusterSpecName)) - .andReturn(HttpURLConnection.HTTP_OK, bkCr) - .times(2); - - - List pods = new ArrayList<>(); - List podsMetrics = new ArrayList<>(); - - for (int i = 0; i < replicas; i++) { - final String podName = "%s-bookkeeper-%d".formatted(clusterSpecName, i); - final Pod pod = new PodBuilder() - .withNewMetadata() - .withName(podName) - .endMetadata() - .withSpec(sts.getSpec().getTemplate().getSpec()) - .withStatus( - new PodStatusBuilder() - .withContainerStatuses( - new ContainerStatusBuilder() - .withReady(true) - .build() - ) - // more than default (stabilizationWindowMs) - .withStartTime(Instant.now().minusSeconds(500).toString()) - .build()) - .build(); - - - final PodMetrics podMetrics = new PodMetricsBuilder() - .withNewMetadata() - .withName(podName) - .endMetadata() - .withContainers( - new ContainerMetricsBuilder() - .withUsage(Map.of("cpu", Quantity.parse("300Mi"))) - .build() - ) - .build(); - podConsumer.accept(pod, podMetrics, i); - pods.add(pod); - podsMetrics.add(podMetrics); - - server.expect() - .get() - .withPath("/api/v1/namespaces/ns/pods/%s".formatted(podName)) - .andReturn(HttpURLConnection.HTTP_OK, pod) - .always(); - } - final PodList podList = new PodListBuilder() - .withItems(pods) + @SneakyThrows + private PatchOp setupMocksAndRunAutoscaler( + String spec, + PodConsumer podConf, + Consumer stsConf, + Function> bookieInfofunc, + Consumer mockServerConfigurator) { + + final PulsarClusterSpec pulsarClusterSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); + pulsarClusterSpec.getGlobal().applyDefaults(null); + pulsarClusterSpec.getBookkeeper().applyDefaults(pulsarClusterSpec.getGlobalSpec()); + + final BookKeeper bkCr = new BookKeeper(); + bkCr.setSpec(BookKeeperFullSpec.builder() + .global(pulsarClusterSpec.getGlobal()) + .bookkeeper(pulsarClusterSpec.getBookkeeper()) + .build()); + + final String clusterSpecName = pulsarClusterSpec.getGlobal().getName(); + + final PatchOp[] capturedPatch = new PatchOp[1]; + + final int replicas = pulsarClusterSpec.getBookkeeper().getReplicas(); + + final BookKeeperResourcesFactory bkResourcesFactory = + new BookKeeperResourcesFactory(null, NAMESPACE, BookKeeperResourcesFactory.BOOKKEEPER_DEFAULT_SET, + pulsarClusterSpec.getBookkeeper(), + pulsarClusterSpec.getGlobal(), null); + + final Field field = bkResourcesFactory.getClass().getDeclaredField("configMap"); + field.setAccessible(true); + field.set(bkResourcesFactory, new ConfigMapBuilder().build()); + final StatefulSet sts = bkResourcesFactory.generateStatefulSet(); + sts.setStatus(new StatefulSetStatusBuilder() + .withReplicas(replicas) + .withReadyReplicas(replicas) + .withUpdatedReplicas(replicas) + .withCurrentRevision("rev") + .withUpdateRevision("rev") + .build()); + + stsConf.accept(sts); + + server.expect() + .get() + .withPath("/apis/apps/v1/namespaces/ns/statefulsets/%s-bookkeeper".formatted(clusterSpecName)) + .andReturn(HttpURLConnection.HTTP_OK, sts) + .once(); + + server.expect() + .get() + .withPath( + "/apis/kaap.oss.datastax.com/v1beta1/namespaces/ns/bookkeepers/%s-bookkeeper".formatted( + clusterSpecName)) + .andReturn(HttpURLConnection.HTTP_OK, bkCr) + .times(2); + + + List pods = new ArrayList<>(); + List podsMetrics = new ArrayList<>(); + + for (int i = 0; i < replicas; i++) { + final String podName = "%s-bookkeeper-%d".formatted(clusterSpecName, i); + final Pod pod = new PodBuilder() + .withNewMetadata() + .withName(podName) + .endMetadata() + .withSpec(sts.getSpec().getTemplate().getSpec()) + .withStatus( + new PodStatusBuilder() + .withContainerStatuses( + new ContainerStatusBuilder() + .withReady(true) + .build() + ) + // more than default (stabilizationWindowMs) + .withStartTime(Instant.now().minusSeconds(500).toString()) + .build()) .build(); - server.expect() - .get() - .withPath("/api/v1/namespaces/ns/pods?labelSelector=%s".formatted( - URLEncoder.encode( - "cluster=%s,component=bookkeeper,resource-set=bookkeeper".formatted(clusterSpecName), - StandardCharsets.UTF_8) - ) - ) - .andReturn(HttpURLConnection.HTTP_OK, podList) - .always(); - final PodMetricsList podMetricsList = new PodMetricsListBuilder() - .withItems(podsMetrics) + final PodMetrics podMetrics = new PodMetricsBuilder() + .withNewMetadata() + .withName(podName) + .endMetadata() + .withContainers( + new ContainerMetricsBuilder() + .withUsage(Map.of("cpu", Quantity.parse("300Mi"))) + .build() + ) .build(); + podConf.accept(pod, podMetrics, i); + pods.add(pod); + podsMetrics.add(podMetrics); server.expect() .get() - .withPath("/apis/metrics.k8s.io/v1beta1/namespaces/ns/pods?labelSelector=%s".formatted( - URLEncoder.encode( - "cluster=%s,component=bookkeeper,resource-set=bookkeeper".formatted(clusterSpecName), - StandardCharsets.UTF_8) - ) - ) - .andReturn(HttpURLConnection.HTTP_OK, podMetricsList) - .once(); - - server.expect() - .patch() - .withPath( - "/apis/kaap.oss.datastax.com/v1beta1/namespaces/ns/bookkeepers/%s-bookkeeper".formatted( - clusterSpecName)) - .andReply(HttpURLConnection.HTTP_OK, new BodyProvider() { - @Override - @SneakyThrows - public Object getBody(RecordedRequest recordedRequest) { - final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - recordedRequest.getBody().copyTo(byteArrayOutputStream); - final ObjectMapper mapper = new ObjectMapper(); - patchOp = mapper.convertValue( - mapper.readValue(byteArrayOutputStream.toByteArray(), List.class).get(0), - PatchOp.class); - return null; - } - }) - .once(); + .withPath("/api/v1/namespaces/ns/pods/%s".formatted(podName)) + .andReturn(HttpURLConnection.HTTP_OK, pod) + .always(); } + final PodList podList = new PodListBuilder() + .withItems(pods) + .build(); + + server.expect() + .get() + .withPath("/api/v1/namespaces/ns/pods?labelSelector=%s".formatted( + URLEncoder.encode( + "cluster=%s,component=bookkeeper,resource-set=bookkeeper".formatted(clusterSpecName), + StandardCharsets.UTF_8) + ) + ) + .andReturn(HttpURLConnection.HTTP_OK, podList) + .always(); + + final PodMetricsList podMetricsList = new PodMetricsListBuilder() + .withItems(podsMetrics) + .build(); + + server.expect() + .get() + .withPath("/apis/metrics.k8s.io/v1beta1/namespaces/ns/pods?labelSelector=%s".formatted( + URLEncoder.encode( + "cluster=%s,component=bookkeeper,resource-set=bookkeeper".formatted(clusterSpecName), + StandardCharsets.UTF_8) + ) + ) + .andReturn(HttpURLConnection.HTTP_OK, podMetricsList) + .once(); + + server.expect() + .patch() + .withPath( + "/apis/kaap.oss.datastax.com/v1beta1/namespaces/ns/bookkeepers/%s-bookkeeper".formatted( + clusterSpecName)) + .andReply(HttpURLConnection.HTTP_OK, new BodyProvider() { + @SneakyThrows + public Object getBody(RecordedRequest recordedRequest) { + final ObjectMapper mapper = new ObjectMapper(); + PatchOp patchOp = mapper.convertValue( + mapper.readValue(recordedRequest.getBody().readByteArray(), List.class).get(0), + PatchOp.class); + capturedPatch[0] = patchOp; + return null; + } + }) + .once(); + + mockServerConfigurator.accept(server); + + BookKeeperSetAutoscaler bkAutoscaler = + new BookKeeperSetAutoscaler( + client, + NAMESPACE, + BookKeeperResourcesFactory.BOOKKEEPER_DEFAULT_SET, + pulsarClusterSpec) { + @Override + protected BookieAdminClient newBookieAdminClient(GlobalSpec currentGlobalSpec, + BookKeeperSetSpec currentBookKeeperSetSpec) { + return new MockBookieAdminClient( + client, + NAMESPACE, + pulsarClusterSpec.getGlobalSpec(), + BookKeeperResourcesFactory.BOOKKEEPER_DEFAULT_SET, + pulsarClusterSpec.getBookkeeper(), + bookieInfofunc); + } + }; + bkAutoscaler.internalRun(); - @Override - public void close() { - server.after(); - } + return capturedPatch[0]; } /** @@ -263,7 +277,7 @@ public void testRestAPIParsing() { enabled: true """; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, null, server -> { @@ -291,7 +305,7 @@ public void testRestAPIParsing() { """; for (int i = 0; i < 3; i++) { // Bookie info - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-" + i, "curl -s http://localhost:8000/api/v1/bookie/info")) @@ -302,7 +316,7 @@ public void testRestAPIParsing() { // Bookie state String response = i == 0 ? bookieStateReadOnly : bookieStateOk; - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-" + i, "curl -s http://localhost:8000/api/v1/bookie/state")) @@ -311,7 +325,7 @@ public void testRestAPIParsing() { .done() .always(); // AR list under replicated - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-" + i, "curl -s http://localhost:8000/api/v1/autorecovery" @@ -322,7 +336,7 @@ public void testRestAPIParsing() { .always(); } }); - Assert.assertEquals(4, mockServer.patchOp.getValue()); + Assertions.assertEquals(4, patchOp.getValue()); } /** @@ -361,11 +375,11 @@ public void testNoScaleUpOrDownNeeded() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } private PodResource getMockPodResource() { @@ -423,11 +437,11 @@ public void testScaleUpReadOnlyBookie() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc); - Assert.assertEquals(5, mockServer.patchOp.getValue()); + Assertions.assertEquals(5, patchOp.getValue()); } /** @@ -466,11 +480,11 @@ public void testScaleUpFromZeroBookies() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc); - Assert.assertEquals(3, mockServer.patchOp.getValue()); + Assertions.assertEquals(3, patchOp.getValue()); } /** @@ -510,11 +524,11 @@ public void testScaleUpLowDiskSpaceBookie() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc); - Assert.assertEquals(4, mockServer.patchOp.getValue()); + Assertions.assertEquals(4, patchOp.getValue()); } /** @@ -562,11 +576,11 @@ public void testScaleUpLowDiskSpaceAndReadOnlyBookies() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc); - Assert.assertEquals(5, mockServer.patchOp.getValue()); + Assertions.assertEquals(5, patchOp.getValue()); } /** @@ -606,13 +620,13 @@ public void testScaleDownBookie() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc, server -> { for (int i = 0; i < 4; i++) { // AR list under replicated - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-" + i, "curl -s http://localhost:8000/api/v1/autorecovery" @@ -622,7 +636,7 @@ public void testScaleDownBookie() { .done() .always(); - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-" + i, "curl -s -X PUT -H \"Content-Type: application/json\" " @@ -635,7 +649,7 @@ public void testScaleDownBookie() { } - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-3", "bin/bookkeeper shell recover -f mockId")) @@ -644,7 +658,7 @@ public void testScaleDownBookie() { .done() .always(); - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-3", "bin/bookkeeper shell recover -f -d mockId")) @@ -653,7 +667,7 @@ public void testScaleDownBookie() { .done() .always(); - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-3", "bin/bookkeeper shell listledgers -meta -bookieid mockId")) @@ -662,7 +676,7 @@ public void testScaleDownBookie() { .done() .always(); - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod("pul-bookkeeper-3", "mv /pulsar/data/bookkeeper/journal/current/VERSION " @@ -673,7 +687,7 @@ public void testScaleDownBookie() { .done() .always(); }); - Assert.assertEquals(3, mockServer.patchOp.getValue()); + Assertions.assertEquals(3, patchOp.getValue()); } /** @@ -714,13 +728,13 @@ public void testNotScaleDownUnderReplicatedCluster() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc, server -> { for (int i = 0; i < 4; i++) { final String podName = "%s-bookkeeper-%d".formatted("pul", i); - server.server.expect() + server.expect() .get() .withPath(genExpectedUrlForExecInPod(podName, "curl -s http://localhost:8000/api/v1/autorecovery" @@ -731,7 +745,7 @@ public void testNotScaleDownUnderReplicatedCluster() { .always(); } }); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } /** @@ -771,11 +785,11 @@ public void testNotScaleDownReadOnlyBookie() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } /** @@ -815,12 +829,12 @@ public void testNotScaleDownFullBookie() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { }, bookieInfofunc); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } @Test @@ -855,12 +869,12 @@ public void testStsNotReady() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { }, statefulSet -> { statefulSet.getStatus().setReadyReplicas(2); }, bookieInfofunc); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } @Test @@ -895,53 +909,32 @@ public void testPodJustStarted() { ); }; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { if (i == 2) { pod.getStatus().setStartTime(Instant.now().minusSeconds(3).toString()); } }, statefulSet -> { }, bookieInfofunc); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } - private MockServer runAutoscaler(String spec, MockServer.PodConsumer podConf, Consumer stsConf, - Function> bookieInfofunc) { + private PatchOp runAutoscaler(String spec, PodConsumer podConf, Consumer stsConf, + Function> bookieInfofunc) { return runAutoscaler(spec, podConf, stsConf, bookieInfofunc, x -> { }); } - private MockServer runAutoscaler(String spec, MockServer.PodConsumer podConf, Consumer stsConf, - Function> bookieInfofunc, - Consumer serverAfter) { - final PulsarClusterSpec pulsarClusterSpec = MockKubernetesClient.readYaml(spec, PulsarClusterSpec.class); - try (final MockServer server = MockServer.builder() - .withPulsarClusterSpec(pulsarClusterSpec) - .withPodConsumer(podConf) - .withStsConsumer(stsConf) - .build()) { - server.start(); - serverAfter.accept(server); - - BookKeeperSetAutoscaler bkAutoscaler = - new BookKeeperSetAutoscaler(server.server.getClient(), NAMESPACE, - BookKeeperResourcesFactory.BOOKKEEPER_DEFAULT_SET, pulsarClusterSpec) { - @Override - protected BookieAdminClient newBookieAdminClient(GlobalSpec currentGlobalSpec, - BookKeeperSetSpec currentBookKeeperSetSpec) { - return new MockBookieAdminClient(server.server.getClient(), NAMESPACE, - pulsarClusterSpec.getGlobalSpec(), - BookKeeperResourcesFactory.BOOKKEEPER_DEFAULT_SET, - pulsarClusterSpec.getBookkeeper(), - bookieInfofunc); - } - }; - bkAutoscaler.internalRun(); - return server; + private PatchOp runAutoscaler(String spec, PodConsumer podConf, Consumer stsConf, + Function> bookieInfofunc, + Consumer mockServerConfigurator) { + try { + return setupMocksAndRunAutoscaler(spec, podConf, stsConf, bookieInfofunc, mockServerConfigurator); + } catch (Exception e) { + throw new RuntimeException(e); } - } private static class MockBookieAdminClient extends PodExecBookieAdminClient { @@ -997,4 +990,4 @@ private static String genExpectedUrlForExecInPod(String podName, String cmd) { + URLEncoder.encode(cmd, StandardCharsets.UTF_8).replace("+", "%20") + "&container=pul-bookkeeper&stdout=true&stderr=true"; } -} +} \ No newline at end of file diff --git a/operator/src/test/java/com/datastax/oss/kaap/autoscaler/BrokerAutoscalerTest.java b/operator/src/test/java/com/datastax/oss/kaap/autoscaler/BrokerAutoscalerTest.java index 81725a1b..2f9fa95a 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/autoscaler/BrokerAutoscalerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/autoscaler/BrokerAutoscalerTest.java @@ -15,11 +15,11 @@ */ package com.datastax.oss.kaap.autoscaler; +import com.datastax.oss.kaap.common.SerializationUtil; import com.datastax.oss.kaap.controllers.broker.BrokerResourcesFactory; import com.datastax.oss.kaap.crds.broker.Broker; import com.datastax.oss.kaap.crds.broker.BrokerFullSpec; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; -import com.datastax.oss.kaap.mocks.MockKubernetesClient; import com.fasterxml.jackson.databind.ObjectMapper; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.ContainerStatusBuilder; @@ -36,9 +36,11 @@ import io.fabric8.kubernetes.api.model.metrics.v1beta1.PodMetricsBuilder; import io.fabric8.kubernetes.api.model.metrics.v1beta1.PodMetricsList; import io.fabric8.kubernetes.api.model.metrics.v1beta1.PodMetricsListBuilder; -import io.fabric8.kubernetes.client.server.mock.KubernetesServer; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; +import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; +import io.fabric8.mockwebserver.http.RecordedRequest; import io.fabric8.mockwebserver.utils.BodyProvider; -import java.io.ByteArrayOutputStream; import java.lang.reflect.Field; import java.net.HttpURLConnection; import java.net.URLEncoder; @@ -48,187 +50,182 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; -import lombok.Builder; import lombok.Data; import lombok.SneakyThrows; -import okhttp3.mockwebserver.RecordedRequest; -import org.testng.Assert; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +@EnableKubernetesMockClient(https = false) public class BrokerAutoscalerTest { private static final String NAMESPACE = "ns"; + KubernetesMockServer server; + KubernetesClient client; - @Builder(setterPrefix = "with") - public static class MockServer implements AutoCloseable { + @FunctionalInterface + public interface PodConsumer { - @FunctionalInterface - public interface PodConsumer { - - void accept(Pod pod, PodMetrics metrics, int index); - } - - private PulsarClusterSpec pulsarClusterSpec; - private PodConsumer podConsumer; - private Consumer stsConsumer; - KubernetesServer server; - - PatchOp patchOp; - - @Data - public static class PatchOp { - String op; - String path; - Object value; - } - - @SneakyThrows - void start() { - pulsarClusterSpec.getGlobal().applyDefaults(null); - pulsarClusterSpec.getBroker().applyDefaults(pulsarClusterSpec.getGlobalSpec()); - - final Broker brokerCr = new Broker(); - brokerCr.setSpec(BrokerFullSpec.builder() - .global(pulsarClusterSpec.getGlobal()) - .broker(pulsarClusterSpec.getBroker()) - .build()); - - final String clusterSpecName = pulsarClusterSpec.getGlobal().getName(); - - server = new KubernetesServer(false); - server.before(); - - final int replicas = pulsarClusterSpec.getBroker().getReplicas(); - - final BrokerResourcesFactory brokerResourcesFactory = - new BrokerResourcesFactory(null, NAMESPACE, BrokerResourcesFactory.BROKER_DEFAULT_SET, - pulsarClusterSpec.getBroker(), - pulsarClusterSpec.getGlobal(), null); + void accept(Pod pod, PodMetrics metrics, int index); + } - final Field field = brokerResourcesFactory.getClass().getDeclaredField("configMap"); - field.setAccessible(true); - field.set(brokerResourcesFactory, new ConfigMapBuilder().build()); - final StatefulSet sts = brokerResourcesFactory.generateStatefulSet(); - sts.setStatus(new StatefulSetStatusBuilder() - .withReplicas(replicas) - .withReadyReplicas(replicas) - .withUpdatedReplicas(replicas) - .withCurrentRevision("rev") - .withUpdateRevision("rev") - .build()); + @Data + public static class PatchOp { + String op; + String path; + Object value; + } - stsConsumer.accept(sts); + @SneakyThrows + private PatchOp setupMocksAndRunAutoscaler( + String spec, + PodConsumer podConf, + Consumer stsConf) { + + final PulsarClusterSpec pulsarClusterSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); + pulsarClusterSpec.getGlobal().applyDefaults(null); + pulsarClusterSpec.getBroker().applyDefaults(pulsarClusterSpec.getGlobalSpec()); + + final Broker brokerCr = new Broker(); + brokerCr.setSpec(BrokerFullSpec.builder() + .global(pulsarClusterSpec.getGlobal()) + .broker(pulsarClusterSpec.getBroker()) + .build()); + + final String clusterSpecName = pulsarClusterSpec.getGlobal().getName(); + + final PatchOp[] capturedPatch = new PatchOp[1]; + + final int replicas = pulsarClusterSpec.getBroker().getReplicas(); + + final BrokerResourcesFactory brokerResourcesFactory = + new BrokerResourcesFactory(null, NAMESPACE, BrokerResourcesFactory.BROKER_DEFAULT_SET, + pulsarClusterSpec.getBroker(), + pulsarClusterSpec.getGlobal(), null); + + final Field field = brokerResourcesFactory.getClass().getDeclaredField("configMap"); + field.setAccessible(true); + field.set(brokerResourcesFactory, new ConfigMapBuilder().build()); + final StatefulSet sts = brokerResourcesFactory.generateStatefulSet(); + sts.setStatus(new StatefulSetStatusBuilder() + .withReplicas(replicas) + .withReadyReplicas(replicas) + .withUpdatedReplicas(replicas) + .withCurrentRevision("rev") + .withUpdateRevision("rev") + .build()); + + stsConf.accept(sts); + + server.expect() + .get() + .withPath("/apis/apps/v1/namespaces/ns/statefulsets/%s-broker".formatted(clusterSpecName)) + .andReturn(HttpURLConnection.HTTP_OK, sts) + .once(); + + server.expect() + .get() + .withPath("/apis/kaap.oss.datastax.com/v1beta1/namespaces/ns/brokers/%s-broker".formatted( + clusterSpecName)) + .andReturn(HttpURLConnection.HTTP_OK, brokerCr) + .times(2); + + + List pods = new ArrayList<>(); + List podsMetrics = new ArrayList<>(); + + for (int i = 0; i < replicas; i++) { + final String podName = "%s-broker-%d".formatted(clusterSpecName, i); + final Pod pod = new PodBuilder() + .withNewMetadata() + .withName(podName) + .endMetadata() + .withSpec(sts.getSpec().getTemplate().getSpec()) + .withStatus( + new PodStatusBuilder() + .withContainerStatuses( + new ContainerStatusBuilder() + .withReady(true) + .build() + ) + // more than default (stabilizationWindowMs) + .withStartTime(Instant.now().minusSeconds(500).toString()) + .build()) + .build(); - server.expect() - .get() - .withPath("/apis/apps/v1/namespaces/ns/statefulsets/%s-broker".formatted(clusterSpecName)) - .andReturn(HttpURLConnection.HTTP_OK, sts) - .once(); - server.expect() - .get() - .withPath("/apis/kaap.oss.datastax.com/v1beta1/namespaces/ns/brokers/%s-broker".formatted( - clusterSpecName)) - .andReturn(HttpURLConnection.HTTP_OK, brokerCr) - .times(2); - - - List pods = new ArrayList<>(); - List podsMetrics = new ArrayList<>(); - - for (int i = 0; i < replicas; i++) { - final String podName = "%s-broker-%d".formatted(clusterSpecName, i); - final Pod pod = new PodBuilder() - .withNewMetadata() - .withName(podName) - .endMetadata() - .withSpec(sts.getSpec().getTemplate().getSpec()) - .withStatus( - new PodStatusBuilder() - .withContainerStatuses( - new ContainerStatusBuilder() - .withReady(true) - .build() - ) - // more than default (stabilizationWindowMs) - .withStartTime(Instant.now().minusSeconds(500).toString()) - .build()) - .build(); - - - final PodMetrics podMetrics = new PodMetricsBuilder() - .withNewMetadata() - .withName(podName) - .endMetadata() - .withContainers( - new ContainerMetricsBuilder() - .withUsage(Map.of("cpu", Quantity.parse("300Mi"))) - .build() - ) - .build(); - podConsumer.accept(pod, podMetrics, i); - pods.add(pod); - podsMetrics.add(podMetrics); - - server.expect() - .get() - .withPath("/api/v1/namespaces/ns/pods/%s".formatted(podName)) - .andReturn(HttpURLConnection.HTTP_OK, pod) - .once(); - } - final PodList podList = new PodListBuilder() - .withItems(pods) - .build(); - server.expect() - .get() - .withPath("/api/v1/namespaces/ns/pods?labelSelector=%s".formatted( - URLEncoder.encode("cluster=%s,component=broker,resource-set=broker" - .formatted(clusterSpecName), - StandardCharsets.UTF_8) - ) + final PodMetrics podMetrics = new PodMetricsBuilder() + .withNewMetadata() + .withName(podName) + .endMetadata() + .withContainers( + new ContainerMetricsBuilder() + .withUsage(Map.of("cpu", Quantity.parse("300Mi"))) + .build() ) - .andReturn(HttpURLConnection.HTTP_OK, podList) - .once(); - - final PodMetricsList podMetricsList = new PodMetricsListBuilder() - .withItems(podsMetrics) .build(); + podConf.accept(pod, podMetrics, i); + pods.add(pod); + podsMetrics.add(podMetrics); server.expect() .get() - .withPath("/apis/metrics.k8s.io/v1beta1/namespaces/ns/pods?labelSelector=%s".formatted( - URLEncoder.encode("cluster=%s,component=broker,resource-set=broker".formatted(clusterSpecName), - StandardCharsets.UTF_8) - ) - ) - .andReturn(HttpURLConnection.HTTP_OK, podMetricsList) - .once(); - - server.expect() - .patch() - .withPath("/apis/kaap.oss.datastax.com/v1beta1/namespaces/ns/brokers/%s-broker".formatted( - clusterSpecName)) - .andReply(HttpURLConnection.HTTP_OK, new BodyProvider() { - @Override - @SneakyThrows - public Object getBody(RecordedRequest recordedRequest) { - final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - recordedRequest.getBody().copyTo(byteArrayOutputStream); - final ObjectMapper mapper = new ObjectMapper(); - patchOp = mapper.convertValue( - mapper.readValue(byteArrayOutputStream.toByteArray(), List.class).get(0), - PatchOp.class); - return null; - } - }) + .withPath("/api/v1/namespaces/ns/pods/%s".formatted(podName)) + .andReturn(HttpURLConnection.HTTP_OK, pod) .once(); } - - @Override - public void close() { - server.after(); - } + final PodList podList = new PodListBuilder() + .withItems(pods) + .build(); + server.expect() + .get() + .withPath("/api/v1/namespaces/ns/pods?labelSelector=%s".formatted( + URLEncoder.encode("cluster=%s,component=broker,resource-set=broker" + .formatted(clusterSpecName), + StandardCharsets.UTF_8) + ) + ) + .andReturn(HttpURLConnection.HTTP_OK, podList) + .once(); + + final PodMetricsList podMetricsList = new PodMetricsListBuilder() + .withItems(podsMetrics) + .build(); + + server.expect() + .get() + .withPath("/apis/metrics.k8s.io/v1beta1/namespaces/ns/pods?labelSelector=%s".formatted( + URLEncoder.encode("cluster=%s,component=broker,resource-set=broker".formatted(clusterSpecName), + StandardCharsets.UTF_8) + ) + ) + .andReturn(HttpURLConnection.HTTP_OK, podMetricsList) + .once(); + + server.expect() + .patch() + .withPath("/apis/kaap.oss.datastax.com/v1beta1/namespaces/ns/brokers/%s-broker".formatted( + clusterSpecName)) + .andReply(HttpURLConnection.HTTP_OK, new BodyProvider() { + @Override + @SneakyThrows + public Object getBody(RecordedRequest recordedRequest) { + final ObjectMapper mapper = new ObjectMapper(); + PatchOp patchOp = mapper.convertValue( + mapper.readValue(recordedRequest.getBody().readByteArray(), List.class).get(0), + PatchOp.class); + capturedPatch[0] = patchOp; + return null; + } + }) + .once(); + + final BrokerSetAutoscaler brokerAutoscaler = + new BrokerSetAutoscaler(client, NAMESPACE, + BrokerResourcesFactory.BROKER_DEFAULT_SET, pulsarClusterSpec); + brokerAutoscaler.internalRun(); + + return capturedPatch[0]; } @Test @@ -245,11 +242,11 @@ public void testScaleUp() { requests: cpu: 1 """; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { metrics.getContainers().get(0).getUsage().put("cpu", Quantity.parse("0.9")); }, statefulSet -> { }); - Assert.assertEquals(4, mockServer.patchOp.getValue()); + Assertions.assertEquals(4, patchOp.getValue()); } @Test @@ -266,11 +263,11 @@ public void testScaleDown() { requests: cpu: 1 """; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { metrics.getContainers().get(0).getUsage().put("cpu", Quantity.parse("0.1")); }, statefulSet -> { }); - Assert.assertEquals(2, mockServer.patchOp.getValue()); + Assertions.assertEquals(2, patchOp.getValue()); } @Test @@ -287,12 +284,12 @@ public void testStsNotReady() { requests: cpu: 1 """; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { metrics.getContainers().get(0).getUsage().put("cpu", Quantity.parse("0.1")); }, statefulSet -> { statefulSet.getStatus().setReadyReplicas(2); }); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } @Test @@ -309,14 +306,14 @@ public void testPodJustStarted() { requests: cpu: 1 """; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { metrics.getContainers().get(0).getUsage().put("cpu", Quantity.parse("0.1")); if (i == 2) { pod.getStatus().setStartTime(Instant.now().minusSeconds(3).toString()); } }, statefulSet -> { }); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } @@ -334,28 +331,18 @@ public void testDoNotScaleToZero() { requests: cpu: 1 """; - final MockServer mockServer = runAutoscaler(spec, (pod, metrics, i) -> { + final PatchOp patchOp = runAutoscaler(spec, (pod, metrics, i) -> { metrics.getContainers().get(0).getUsage().put("cpu", Quantity.parse("0.1")); }, statefulSet -> { }); - Assert.assertNull(mockServer.patchOp); + Assertions.assertNull(patchOp); } - private MockServer runAutoscaler(String spec, MockServer.PodConsumer podConf, Consumer stsConf) { - final PulsarClusterSpec pulsarClusterSpec = MockKubernetesClient.readYaml(spec, PulsarClusterSpec.class); - try (final MockServer server = MockServer.builder() - .withPulsarClusterSpec(pulsarClusterSpec) - .withPodConsumer(podConf) - .withStsConsumer(stsConf) - .build();) { - server.start(); - - final BrokerSetAutoscaler brokerAutoscaler = - new BrokerSetAutoscaler(server.server.getClient(), NAMESPACE, - BrokerResourcesFactory.BROKER_DEFAULT_SET, pulsarClusterSpec); - brokerAutoscaler.internalRun(); - return server; + private PatchOp runAutoscaler(String spec, PodConsumer podConf, Consumer stsConf) { + try { + return setupMocksAndRunAutoscaler(spec, podConf, stsConf); + } catch (Exception e) { + throw new RuntimeException(e); } - } -} +} \ No newline at end of file diff --git a/operator/src/test/java/com/datastax/oss/kaap/autoscaler/broker/LoadReportResourceUsageSourceTest.java b/operator/src/test/java/com/datastax/oss/kaap/autoscaler/broker/LoadReportResourceUsageSourceTest.java index bb6c0367..c26ff6b9 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/autoscaler/broker/LoadReportResourceUsageSourceTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/autoscaler/broker/LoadReportResourceUsageSourceTest.java @@ -15,18 +15,20 @@ */ package com.datastax.oss.kaap.autoscaler.broker; +import com.datastax.oss.kaap.common.SerializationUtil; import com.datastax.oss.kaap.controllers.broker.BrokerResourcesFactory; import com.datastax.oss.kaap.crds.broker.Broker; import com.datastax.oss.kaap.crds.broker.BrokerFullSpec; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; -import com.datastax.oss.kaap.mocks.MockKubernetesClient; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.PodBuilder; import io.fabric8.kubernetes.api.model.PodList; import io.fabric8.kubernetes.api.model.PodListBuilder; import io.fabric8.kubernetes.api.model.apps.StatefulSet; -import io.fabric8.kubernetes.client.server.mock.KubernetesServer; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; +import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import io.fabric8.kubernetes.client.server.mock.OutputStreamMessage; import java.lang.reflect.Field; import java.net.HttpURLConnection; @@ -36,92 +38,87 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; -import java.util.function.BiConsumer; -import lombok.Builder; import lombok.SneakyThrows; -import org.testng.Assert; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; -public class LoadReportResourceUsageSourceTest { - @Builder(setterPrefix = "with") - public static class MockServer implements AutoCloseable { +@EnableKubernetesMockClient(https = false) +public class LoadReportResourceUsageSourceTest { - private PulsarClusterSpec pulsarClusterSpec; - private BiConsumer podConsumer; + KubernetesMockServer server; + KubernetesClient client; - KubernetesServer server; + @FunctionalInterface + public interface PodConsumer { - @SneakyThrows - void start() { - pulsarClusterSpec.getGlobal().applyDefaults(null); - pulsarClusterSpec.getBroker().applyDefaults(pulsarClusterSpec.getGlobalSpec()); + void accept(Pod pod, KubernetesMockServer server); + } - final Broker brokerCr = new Broker(); - brokerCr.setSpec(BrokerFullSpec.builder() - .global(pulsarClusterSpec.getGlobal()) - .broker(pulsarClusterSpec.getBroker()) - .build()); + @SneakyThrows + private void setupMocks( + PulsarClusterSpec pulsarClusterSpec, + PodConsumer podConsumer) { - final String clusterSpecName = pulsarClusterSpec.getGlobal().getName(); + pulsarClusterSpec.getGlobal().applyDefaults(null); + pulsarClusterSpec.getBroker().applyDefaults(pulsarClusterSpec.getGlobalSpec()); - server = new KubernetesServer(false); - server.before(); + final Broker brokerCr = new Broker(); + brokerCr.setSpec(BrokerFullSpec.builder() + .global(pulsarClusterSpec.getGlobal()) + .broker(pulsarClusterSpec.getBroker()) + .build()); - List pods = new ArrayList<>(); + final String clusterSpecName = pulsarClusterSpec.getGlobal().getName(); - BrokerResourcesFactory brokerResourcesFactory = - new BrokerResourcesFactory(null, "ns", BrokerResourcesFactory.BROKER_DEFAULT_SET, - pulsarClusterSpec.getBroker(), - pulsarClusterSpec.getGlobal(), null); - final Field field = brokerResourcesFactory.getClass().getDeclaredField("configMap"); - field.setAccessible(true); - field.set(brokerResourcesFactory, new ConfigMapBuilder().build()); - final StatefulSet sts = brokerResourcesFactory.generateStatefulSet(); + List pods = new ArrayList<>(); + BrokerResourcesFactory brokerResourcesFactory = + new BrokerResourcesFactory(null, "ns", BrokerResourcesFactory.BROKER_DEFAULT_SET, + pulsarClusterSpec.getBroker(), + pulsarClusterSpec.getGlobal(), null); + final Field field = brokerResourcesFactory.getClass().getDeclaredField("configMap"); + field.setAccessible(true); + field.set(brokerResourcesFactory, new ConfigMapBuilder().build()); + final StatefulSet sts = brokerResourcesFactory.generateStatefulSet(); - final Integer replicas = pulsarClusterSpec.getBroker().getReplicas(); - for (int i = 0; i < replicas; i++) { - final String podName = "%s-broker-%d".formatted(clusterSpecName, i); - final Pod pod = new PodBuilder() - .withNewMetadata() - .withName(podName) - .endMetadata() - .withSpec(sts.getSpec().getTemplate().getSpec()) - .build(); - podConsumer.accept(pod, this); - pods.add(pod); - server.expect() - .get() - .withPath("/api/v1/namespaces/ns/pods/%s".formatted(podName)) - .andReturn(HttpURLConnection.HTTP_OK, pod) - .once(); - } + final Integer replicas = pulsarClusterSpec.getBroker().getReplicas(); - final PodList podList = new PodListBuilder() - .withItems(pods) + for (int i = 0; i < replicas; i++) { + final String podName = "%s-broker-%d".formatted(clusterSpecName, i); + final Pod pod = new PodBuilder() + .withNewMetadata() + .withName(podName) + .endMetadata() + .withSpec(sts.getSpec().getTemplate().getSpec()) .build(); + podConsumer.accept(pod, server); + pods.add(pod); server.expect() .get() - .withPath("/api/v1/namespaces/ns/pods?labelSelector=%s".formatted( - URLEncoder.encode("app=pulsar" - .formatted(clusterSpecName), - StandardCharsets.UTF_8) - ) - ) - .andReturn(HttpURLConnection.HTTP_OK, podList) + .withPath("/api/v1/namespaces/ns/pods/%s".formatted(podName)) + .andReturn(HttpURLConnection.HTTP_OK, pod) .once(); - } - @Override - public void close() { - server.after(); - } + final PodList podList = new PodListBuilder() + .withItems(pods) + .build(); + server.expect() + .get() + .withPath("/api/v1/namespaces/ns/pods?labelSelector=%s".formatted( + URLEncoder.encode("app=pulsar" + .formatted(clusterSpecName), + StandardCharsets.UTF_8) + ) + ) + .andReturn(HttpURLConnection.HTTP_OK, podList) + .once(); + } - @Test(expectedExceptions = ExecutionException.class) + @Test public void testLastFailed() throws Exception { final String spec = """ global: @@ -132,32 +129,44 @@ public void testLastFailed() throws Exception { enabled: true """; - final List brokersResourceUsages = - createLoadReportResourceUsageSource(spec, (pod, server) -> { - final String[] split = pod.getMetadata().getName().split("-"); - int replicaCount = Integer.parseInt(split[split.length - 1]); - final String podExec = genExpectedUrlForExecInPod(pod.getMetadata().getName(), - "curl http://localhost:8080/admin/v2/broker-stats/load-report/"); - if (replicaCount == 0) { - - server.server.expect() - .get() - .withPath(podExec) - .andUpgradeToWebSocket() - .open(new OutputStreamMessage(""" - { - "cpu": { - "usage": %f, - "limit": 8.0 - }, - "other": {} - } - """.formatted(2.33 * (replicaCount + 1)))) - .done() - .always(); - } - - }); + final PulsarClusterSpec pulsarClusterSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); + + setupMocks(pulsarClusterSpec, (pod, mockServer) -> { + final String[] split = pod.getMetadata().getName().split("-"); + int replicaCount = Integer.parseInt(split[split.length - 1]); + final String podExec = genExpectedUrlForExecInPod(pod.getMetadata().getName(), + "curl http://localhost:8080/admin/v2/broker-stats/load-report/"); + if (replicaCount == 0) { + + mockServer.expect() + .get() + .withPath(podExec) + .andUpgradeToWebSocket() + .open(new OutputStreamMessage(""" + { + "cpu": { + "usage": %f, + "limit": 8.0 + }, + "other": {} + } + """.formatted(2.33 * (replicaCount + 1)))) + .done() + .always(); + } + + }); + + final LoadReportResourceUsageSource source = + new LoadReportResourceUsageSource(client, "ns", Map.of("app", "pulsar"), + BrokerResourcesFactory.BROKER_DEFAULT_SET, + pulsarClusterSpec.getBroker(), + pulsarClusterSpec.getGlobalSpec()); + + // FIX: The original test expected ExecutionException, so we use assertThrows + Assertions.assertThrows(ExecutionException.class, () -> { + source.getBrokersResourceUsages(); + }); } @Test @@ -171,57 +180,60 @@ public void testOk() throws Exception { enabled: true """; - final List brokersResourceUsages = - createLoadReportResourceUsageSource(spec, (pod, server) -> { - final String[] split = pod.getMetadata().getName().split("-"); - int replicaCount = Integer.parseInt(split[split.length - 1]); - final String podExec = genExpectedUrlForExecInPod(pod.getMetadata().getName(), - "curl http://localhost:8080/admin/v2/broker-stats/load-report/"); - - server.server.expect() - .get() - .withPath(podExec) - .andUpgradeToWebSocket() - .open(new OutputStreamMessage(""" - { - "cpu": { - "usage": %f, - "limit": 8.0 - }, - "other": {} - } - """.formatted(2.33 * (replicaCount + 1)))) - .done() - .always(); - - }); - - Assert.assertEquals(brokersResourceUsages.size(), 2); - Assert.assertEquals(brokersResourceUsages.get(0).getPod(), "pul-broker-0"); - Assert.assertEquals(brokersResourceUsages.get(0).getPercentCpu() + "", "0.29"); - Assert.assertEquals(brokersResourceUsages.get(1).getPod(), "pul-broker-1"); - Assert.assertEquals(brokersResourceUsages.get(1).getPercentCpu() + "", "0.58"); + final PulsarClusterSpec pulsarClusterSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); + + setupMocks(pulsarClusterSpec, (pod, mockServer) -> { + final String[] split = pod.getMetadata().getName().split("-"); + int replicaCount = Integer.parseInt(split[split.length - 1]); + final String podExec = genExpectedUrlForExecInPod(pod.getMetadata().getName(), + "curl http://localhost:8080/admin/v2/broker-stats/load-report/"); + + mockServer.expect() + .get() + .withPath(podExec) + .andUpgradeToWebSocket() + .open(new OutputStreamMessage(""" + { + "cpu": { + "usage": %f, + "limit": 8.0 + }, + "other": {} + } + """.formatted(2.33 * (replicaCount + 1)))) + .done() + .always(); + + }); + + final LoadReportResourceUsageSource source = + new LoadReportResourceUsageSource(client, "ns", Map.of("app", "pulsar"), + BrokerResourcesFactory.BROKER_DEFAULT_SET, + pulsarClusterSpec.getBroker(), + pulsarClusterSpec.getGlobalSpec()); + + final List brokersResourceUsages = source.getBrokersResourceUsages(); + + Assertions.assertEquals(brokersResourceUsages.size(), 2); + Assertions.assertEquals(brokersResourceUsages.get(0).getPod(), "pul-broker-0"); + Assertions.assertEquals(brokersResourceUsages.get(0).getPercentCpu() + "", "0.29"); + Assertions.assertEquals(brokersResourceUsages.get(1).getPod(), "pul-broker-1"); + Assertions.assertEquals(brokersResourceUsages.get(1).getPercentCpu() + "", "0.58"); } private List createLoadReportResourceUsageSource(String spec, - BiConsumer podConf) { - final PulsarClusterSpec pulsarClusterSpec = MockKubernetesClient.readYaml(spec, PulsarClusterSpec.class); - try (final MockServer server = MockServer.builder() - .withPulsarClusterSpec(pulsarClusterSpec) - .withPodConsumer(podConf) - .build();) { - server.start(); - - - final LoadReportResourceUsageSource source = - new LoadReportResourceUsageSource(server.server.getClient(), "ns", Map.of("app", "pulsar"), - BrokerResourcesFactory.BROKER_DEFAULT_SET, - pulsarClusterSpec.getBroker(), - pulsarClusterSpec.getGlobalSpec()); - return source.getBrokersResourceUsages(); - } + PodConsumer podConf) { + final PulsarClusterSpec pulsarClusterSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); + + setupMocks(pulsarClusterSpec, podConf); + + final LoadReportResourceUsageSource source = + new LoadReportResourceUsageSource(client, "ns", Map.of("app", "pulsar"), + BrokerResourcesFactory.BROKER_DEFAULT_SET, + pulsarClusterSpec.getBroker(), + pulsarClusterSpec.getGlobalSpec()); + return source.getBrokersResourceUsages(); } private static String genExpectedUrlForExecInPod(String podName, String cmd) { @@ -231,6 +243,4 @@ private static String genExpectedUrlForExecInPod(String podName, String cmd) { + URLEncoder.encode(cmd, StandardCharsets.UTF_8).replace("+", "%20") + "&container=pul-broker&stdout=true&stderr=true"; } - - } \ No newline at end of file diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/ControllerTestUtil.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/ControllerTestUtil.java index a6b7b17d..5e3bd399 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/ControllerTestUtil.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/ControllerTestUtil.java @@ -17,6 +17,7 @@ import static org.mockito.Mockito.mock; import com.datastax.oss.kaap.OperatorRuntimeConfiguration; +import com.datastax.oss.kaap.common.SerializationUtil; import com.datastax.oss.kaap.crds.BaseComponentStatus; import com.datastax.oss.kaap.crds.CRDConstants; import com.datastax.oss.kaap.crds.FullSpecWithDefaults; @@ -79,9 +80,9 @@ public void invokeControllerAndAssertError(String spec, String expectedErrorMess final MockKubernetesClient mockKubernetesClient = new MockKubernetesClient(namespace); final UpdateControl result = invokeController(mockKubernetesClient, spec, specClass, fullSpecClass, controllerClass); - Assert.assertTrue(result.isUpdateStatus()); + Assert.assertTrue(result.isPatchStatus()); - final Condition readyCondition = result.getResource().getStatus().getConditions().get(0); + final Condition readyCondition = result.getResource().get().getStatus().getConditions().get(0); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertEquals(readyCondition.getMessage(), expectedErrorMessage); @@ -95,9 +96,9 @@ public MockKubernetesClient invokeController(String spec, Class specClass, Cl final MockKubernetesClient mockKubernetesClient = new MockKubernetesClient(namespace); final UpdateControl result = invokeController(mockKubernetesClient, spec, specClass, fullSpecClass, controllerClass); - Assert.assertTrue(result.isUpdateStatus()); + Assert.assertTrue(result.isPatchStatus()); - final Condition readyCondition = result.getResource().getStatus().getConditions().get(0); + final Condition readyCondition = result.getResource().get().getStatus().getConditions().get(0); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertNull(readyCondition.getMessage()); Assert.assertEquals(readyCondition.getReason(), CRDConstants.CONDITIONS_TYPE_READY_REASON_INITIALIZING); @@ -143,7 +144,7 @@ public R createCustomResource(R cr, Class fullSpecClass, String spec) throws new ObjectMetaBuilder() .withName(clusterName + "-cr").withNamespace(namespace) .build()); - cr.setSpec(MockKubernetesClient.readYaml(spec, fullSpecClass)); + cr.setSpec(SerializationUtil.readYaml(spec, fullSpecClass)); cr.getSpec().getGlobalSpec().applyDefaults(null); cr.getSpec().applyDefaults(cr.getSpec().getGlobalSpec()); return cr; diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/KubeTestUtil.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/KubeTestUtil.java index 7d6e4d12..1da2f477 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/KubeTestUtil.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/KubeTestUtil.java @@ -128,7 +128,7 @@ public static Condition getReadyCondition(BaseComponentStatus status) { public static void assertUpdateControlInitializing( UpdateControl> updateControl) { Assert.assertEquals(updateControl.getScheduleDelay().get().longValue(), 5000L); - Condition readyCondition = getReadyCondition(updateControl.getResource().getStatus()); + Condition readyCondition = getReadyCondition(updateControl.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertEquals(readyCondition.getReason(), CRDConstants.CONDITIONS_TYPE_READY_REASON_INITIALIZING); } @@ -136,7 +136,7 @@ public static void assertUpdateControlInitializing( public static void assertUpdateControlReady( UpdateControl> updateControl) { Assert.assertFalse(updateControl.getScheduleDelay().isPresent()); - Condition readyCondition = getReadyCondition(updateControl.getResource().getStatus()); + Condition readyCondition = getReadyCondition(updateControl.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_TRUE); } } diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/PulsarClusterControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/PulsarClusterControllerTest.java index f3c5d1b7..276d5652 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/PulsarClusterControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/PulsarClusterControllerTest.java @@ -18,6 +18,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import com.datastax.oss.kaap.common.SerializationUtil; import com.datastax.oss.kaap.controllers.utils.TokenAuthProvisioner; import com.datastax.oss.kaap.crds.BaseComponentStatus; import com.datastax.oss.kaap.crds.CRDConstants; @@ -283,7 +284,7 @@ public void testInstallCluster() throws Exception { }); Assert.assertEquals(client.countCreatedResources(), 0); Assert.assertNull(control.getScheduleDelay().orElse(null)); - Condition readyCondition = KubeTestUtil.getReadyCondition(control.getResource().getStatus()); + Condition readyCondition = KubeTestUtil.getReadyCondition(control.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_TRUE); } @@ -699,7 +700,7 @@ protected TokenAuthProvisioner getTokenAuthProvisioner(String namespace) { meta.setNamespace(NAMESPACE); cr.setMetadata(meta); - final PulsarClusterSpec fSpec = MockKubernetesClient.readYaml(spec, PulsarClusterSpec.class); + final PulsarClusterSpec fSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); cr.setSpec(fSpec); return controller.reconcile(cr, mock(Context.class)); @@ -761,7 +762,7 @@ public void testResourceSets() throws Exception { """; MockKubernetesClient client = new MockKubernetesClient(NAMESPACE); final UpdateControl status = invokeController(client, spec, r -> null); - final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().getStatus()); + final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertEquals(readyCondition.getReason(), CRDConstants.CONDITIONS_TYPE_READY_REASON_INITIALIZING); } @@ -782,7 +783,7 @@ public void testBookKeeperResourceSetsNotDefined() throws Exception { """; MockKubernetesClient client = new MockKubernetesClient(NAMESPACE); final UpdateControl status = invokeController(client, spec, r -> null); - final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().getStatus()); + final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertEquals(readyCondition.getReason(), CRDConstants.CONDITIONS_TYPE_READY_REASON_INVALID_SPEC); Assert.assertTrue(readyCondition.getMessage().contains( @@ -806,7 +807,7 @@ public void testBrokerResourceSetsNotDefined() throws Exception { """; MockKubernetesClient client = new MockKubernetesClient(NAMESPACE); final UpdateControl status = invokeController(client, spec, r -> null); - final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().getStatus()); + final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertEquals(readyCondition.getReason(), CRDConstants.CONDITIONS_TYPE_READY_REASON_INVALID_SPEC); Assert.assertTrue(readyCondition.getMessage().contains( @@ -830,7 +831,7 @@ public void testProxyResourceSetsNotDefined() throws Exception { """; MockKubernetesClient client = new MockKubernetesClient(NAMESPACE); final UpdateControl status = invokeController(client, spec, r -> null); - final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().getStatus()); + final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertEquals(readyCondition.getReason(), CRDConstants.CONDITIONS_TYPE_READY_REASON_INVALID_SPEC); Assert.assertTrue(readyCondition.getMessage().contains( @@ -858,7 +859,7 @@ public void testRacksOk() throws Exception { """; MockKubernetesClient client = new MockKubernetesClient(NAMESPACE); final UpdateControl status = invokeController(client, spec, r -> null); - final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().getStatus()); + final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertEquals(readyCondition.getReason(), CRDConstants.CONDITIONS_TYPE_READY_REASON_INITIALIZING); } @@ -881,11 +882,11 @@ public void testRacks() throws Exception { """; MockKubernetesClient client = new MockKubernetesClient(NAMESPACE); final UpdateControl status = invokeController(client, spec, r -> null); - final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().getStatus()); + final Condition readyCondition = KubeTestUtil.getReadyCondition(status.getResource().get().getStatus()); Assert.assertEquals(readyCondition.getStatus(), CRDConstants.CONDITIONS_STATUS_FALSE); Assert.assertEquals(readyCondition.getReason(), CRDConstants.CONDITIONS_TYPE_READY_REASON_INVALID_SPEC); Assert.assertTrue(readyCondition.getMessage().contains( - "Resource set set2 references a rack rack1 that does not exist. You must define racks in .global.racks"), + "Resource set set2 references a rack rack1 that does not exist. You must define racks in .global.racks"), readyCondition.getMessage() ); } @@ -1039,4 +1040,4 @@ public void testAdjustBrokerReplicas() throws Exception { Assert.assertEquals(brokerGetCount.get(), 1); KubeTestUtil.assertUpdateControlInitializing(control); } -} +} \ No newline at end of file diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperSetsControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperSetsControllerTest.java index 09045f62..bba04189 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperSetsControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperSetsControllerTest.java @@ -129,7 +129,7 @@ public void testBookKeeperSetsDefaultName() throws Exception { Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); Assert.assertEquals(client.getCreatedResources(ConfigMap.class).size(), 1); Assert.assertEquals(client.getCreatedResource(ConfigMap.class).getResource() - .getData().get("PULSAR_PREFIX_myconfig"), "thevalue"); + .getData().get("PULSAR_PREFIX_myconfig"), "thevalue"); Assert.assertEquals(client.getCreatedResources(PodDisruptionBudget.class).size(), 1); System.out.println(client.getCreatedResources(Service.class).stream().map(d -> d.getResource().getMetadata().getName()).collect( Collectors.toList())); @@ -725,17 +725,17 @@ public void testRollingUpdate() throws Exception { // verify order of sets follows the order declared in the spec Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-bookkeeper-setz")); BookKeeperController.BookKeeperSetsLastApplied setsLastApplied = - SerializationUtil.readJson(bookkeeperUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied(), BookKeeperController.BookKeeperSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("setz")); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); setsLastApplied = - SerializationUtil.readJson(bookkeeperUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied(), BookKeeperController.BookKeeperSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("setz")); @@ -744,11 +744,11 @@ public void testRollingUpdate() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); setsLastApplied = - SerializationUtil.readJson(bookkeeperUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied(), BookKeeperController.BookKeeperSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("seta")); @@ -756,10 +756,10 @@ public void testRollingUpdate() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-seta", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(bookkeeperUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied()); // now update @@ -780,7 +780,7 @@ public void testRollingUpdate() throws Exception { seta: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-bookkeeper-setz")); @@ -790,7 +790,7 @@ public void testRollingUpdate() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-bookkeeper-seta")); @@ -799,7 +799,7 @@ public void testRollingUpdate() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-seta", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); @@ -824,32 +824,32 @@ public void testParallelUpdate() throws Exception { Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 2); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-bookkeeper-setz")); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-bookkeeper-seta")); - Assert.assertNotNull(bookkeeperUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(bookkeeperUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putResource("pulsar-spec-1-bookkeeper-setz", resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(bookkeeperUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putResource("pulsar-spec-1-bookkeeper-seta", resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-seta", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(bookkeeperUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied()); // now update @@ -871,31 +871,31 @@ public void testParallelUpdate() throws Exception { seta: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 2); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-bookkeeper-setz")); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-bookkeeper-seta")); - Assert.assertNotNull(bookkeeperUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putResource("pulsar-spec-1-bookkeeper-setz", resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(bookkeeperUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putResource("pulsar-spec-1-bookkeeper-seta", resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-seta", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(bookkeeperUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied()); } @Test @@ -914,7 +914,7 @@ public void testDefineBookKeeperSetWithDefaultName() throws Exception { UpdateControl bookkeeperUpdateControl = invokeController(spec, new BookKeeper(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); BookKeeperController.BookKeeperSetsLastApplied setsLastApplied = - SerializationUtil.readJson(bookkeeperUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied(), BookKeeperController.BookKeeperSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("setz")); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); @@ -926,10 +926,10 @@ public void testDefineBookKeeperSetWithDefaultName() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); setsLastApplied = - SerializationUtil.readJson(bookkeeperUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied(), BookKeeperController.BookKeeperSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("bookkeeper")); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); @@ -939,7 +939,7 @@ public void testDefineBookKeeperSetWithDefaultName() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-bookkeeper", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); Assert.assertEquals(client.getDeletedResources().size(), 0); @@ -953,10 +953,10 @@ public void testDefineBookKeeperSetWithDefaultName() throws Exception { setz: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); setsLastApplied = - SerializationUtil.readJson(bookkeeperUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied(), BookKeeperController.BookKeeperSetsLastApplied.class); Assert.assertNull(setsLastApplied.getSets().get("bookkeeper")); @@ -978,10 +978,10 @@ public void testDefineBookKeeperSetWithDefaultName() throws Exception { sets: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); setsLastApplied = - SerializationUtil.readJson(bookkeeperUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(bookkeeperUpdateControl.getResource().get().getStatus().getLastApplied(), BookKeeperController.BookKeeperSetsLastApplied.class); Assert.assertNull(setsLastApplied.getSets().get("setz")); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); @@ -1024,7 +1024,7 @@ public void testCleanupPvc() throws Exception { resolver.putResource("pulsar-spec-1-bookkeeper-journal-3", genPvc()); resolver.putResource("pulsar-spec-1-bookkeeper-ledgers-3", genPvc()); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); Assert.assertEquals(client.getDeletedResources().size(), 0); @@ -1038,7 +1038,7 @@ public void testCleanupPvc() throws Exception { """; mockBookieAdminClient(3); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); Assert.assertEquals(client.getDeletedResources().size(), 4); Assert.assertNotNull(client.getDeletedResource(PersistentVolumeClaim.class, "pulsar-spec-1-bookkeeper-ledgers-2")); @@ -1057,7 +1057,7 @@ public void testCleanupPvc() throws Exception { """; mockBookieAdminClient(2); client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(bookkeeperUpdateControl); Assert.assertEquals(client.getDeletedResources().size(), 0); @@ -1152,7 +1152,7 @@ public void testDownscaling() throws Exception { replicas: 3 """; client = new MockKubernetesClient(NAMESPACE, resolver); - bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource(), client); + bookkeeperUpdateControl = invokeController(spec, bookkeeperUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(bookkeeperUpdateControl); Assert.assertEquals((int) client.getCreatedResource(StatefulSet.class).getResource().getSpec().getReplicas(), 3); @@ -1180,4 +1180,4 @@ private BookieAdminClient.BookieInfo genBookieInfo(String bookieId) { .podResource(pod) .build(); } -} +} \ No newline at end of file diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/broker/BrokerSetsControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/broker/BrokerSetsControllerTest.java index 16d73676..4c97c2d1 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/broker/BrokerSetsControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/broker/BrokerSetsControllerTest.java @@ -629,7 +629,7 @@ public void testRollingUpdate() throws Exception { UpdateControl brokerUpdateControl = invokeController(spec, new Broker(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); BrokerController.BrokerSetsLastApplied setsLastApplied = - SerializationUtil.readJson(brokerUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(brokerUpdateControl.getResource().get().getStatus().getLastApplied(), BrokerController.BrokerSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("setz")); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); @@ -638,7 +638,7 @@ public void testRollingUpdate() throws Exception { client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); @@ -646,12 +646,12 @@ public void testRollingUpdate() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-broker-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); setsLastApplied = - SerializationUtil.readJson(brokerUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(brokerUpdateControl.getResource().get().getStatus().getLastApplied(), BrokerController.BrokerSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("seta")); @@ -659,10 +659,10 @@ public void testRollingUpdate() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-broker-seta", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); // now update @@ -683,7 +683,7 @@ public void testRollingUpdate() throws Exception { seta: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-broker-setz")); @@ -694,7 +694,7 @@ public void testRollingUpdate() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-broker-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-broker-seta")); @@ -703,7 +703,7 @@ public void testRollingUpdate() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-broker-seta", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); @@ -728,32 +728,32 @@ public void testParallelUpdate() throws Exception { Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 2); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-broker-setz")); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-broker-seta")); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putResource("pulsar-spec-1-broker-setz", resolver.newStatefulSetBuilder("pulsar-spec-1-broker-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putResource("pulsar-spec-1-broker-seta", resolver.newStatefulSetBuilder("pulsar-spec-1-broker-seta", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); // now update @@ -775,31 +775,31 @@ public void testParallelUpdate() throws Exception { seta: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 2); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-broker-setz")); Assert.assertNotNull(client.getCreatedResource(StatefulSet.class, "pulsar-spec-1-broker-seta")); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putResource("pulsar-spec-1-broker-setz", resolver.newStatefulSetBuilder("pulsar-spec-1-broker-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putResource("pulsar-spec-1-broker-seta", resolver.newStatefulSetBuilder("pulsar-spec-1-broker-seta", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); } @Test @@ -818,7 +818,7 @@ public void testDefineBrokerSetWithDefaultName() throws Exception { UpdateControl brokerUpdateControl = invokeController(spec, new Broker(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); BrokerController.BrokerSetsLastApplied setsLastApplied = - SerializationUtil.readJson(brokerUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(brokerUpdateControl.getResource().get().getStatus().getLastApplied(), BrokerController.BrokerSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("setz")); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); @@ -830,10 +830,10 @@ public void testDefineBrokerSetWithDefaultName() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-broker-setz", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(brokerUpdateControl); setsLastApplied = - SerializationUtil.readJson(brokerUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(brokerUpdateControl.getResource().get().getStatus().getLastApplied(), BrokerController.BrokerSetsLastApplied.class); Assert.assertNotNull(setsLastApplied.getSets().get("broker")); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 1); @@ -843,10 +843,10 @@ public void testDefineBrokerSetWithDefaultName() throws Exception { resolver.newStatefulSetBuilder("pulsar-spec-1-broker", true).build()); client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(brokerUpdateControl); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); - Assert.assertNotNull(brokerUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(brokerUpdateControl.getResource().get().getStatus().getLastApplied()); Assert.assertEquals(client.getDeletedResources().size(), 0); spec = """ @@ -858,10 +858,10 @@ public void testDefineBrokerSetWithDefaultName() throws Exception { setz: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(brokerUpdateControl); setsLastApplied = - SerializationUtil.readJson(brokerUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(brokerUpdateControl.getResource().get().getStatus().getLastApplied(), BrokerController.BrokerSetsLastApplied.class); Assert.assertNull(setsLastApplied.getSets().get("broker")); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); @@ -881,10 +881,10 @@ public void testDefineBrokerSetWithDefaultName() throws Exception { sets: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource(), client); + brokerUpdateControl = invokeController(spec, brokerUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(brokerUpdateControl); setsLastApplied = - SerializationUtil.readJson(brokerUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(brokerUpdateControl.getResource().get().getStatus().getLastApplied(), BrokerController.BrokerSetsLastApplied.class); Assert.assertNull(setsLastApplied.getSets().get("setz")); Assert.assertEquals(client.getCreatedResources(StatefulSet.class).size(), 0); @@ -895,4 +895,4 @@ public void testDefineBrokerSetWithDefaultName() throws Exception { Assert.assertNotNull(client.getDeletedResource(StatefulSet.class, "pulsar-spec-1-broker-setz")); Assert.assertNotNull(client.getDeletedResource(ConfigMap.class, "pulsar-spec-1-broker-setz")); } -} +} \ No newline at end of file diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxySetsControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxySetsControllerTest.java index e77d77cc..99dc36b8 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxySetsControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxySetsControllerTest.java @@ -576,7 +576,7 @@ public void testRollingUpdate() throws Exception { UpdateControl proxyUpdateControl = invokeController(spec, new Proxy(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); ProxyController.ProxySetsLastApplied proxySetsLastApplied = - SerializationUtil.readJson(proxyUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(proxyUpdateControl.getResource().get().getStatus().getLastApplied(), ProxyController.ProxySetsLastApplied.class); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 1); // verify order of sets follows the order declared in the spec @@ -586,10 +586,10 @@ public void testRollingUpdate() throws Exception { client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); proxySetsLastApplied = - SerializationUtil.readJson(proxyUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(proxyUpdateControl.getResource().get().getStatus().getLastApplied(), ProxyController.ProxySetsLastApplied.class); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); Assert.assertNotNull(proxySetsLastApplied.getSets().get("setz")); @@ -597,10 +597,10 @@ public void testRollingUpdate() throws Exception { resolver.putDeployment("pulsar-spec-1-proxy-setz", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); proxySetsLastApplied = - SerializationUtil.readJson(proxyUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(proxyUpdateControl.getResource().get().getStatus().getLastApplied(), ProxyController.ProxySetsLastApplied.class); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 1); Assert.assertNotNull(proxySetsLastApplied.getSets().get("seta")); @@ -608,10 +608,10 @@ public void testRollingUpdate() throws Exception { resolver.putDeployment("pulsar-spec-1-proxy-seta", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); - Assert.assertNotNull(proxyUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(proxyUpdateControl.getResource().get().getStatus().getLastApplied()); // now update @@ -630,7 +630,7 @@ public void testRollingUpdate() throws Exception { seta: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 1); Assert.assertNotNull(client.getCreatedResource(Deployment.class, "pulsar-spec-1-proxy-setz")); @@ -639,7 +639,7 @@ public void testRollingUpdate() throws Exception { resolver.putDeployment("pulsar-spec-1-proxy-setz", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 1); Assert.assertNotNull(client.getCreatedResource(Deployment.class, "pulsar-spec-1-proxy-seta")); @@ -647,7 +647,7 @@ public void testRollingUpdate() throws Exception { resolver.putDeployment("pulsar-spec-1-proxy-seta", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); } @@ -671,30 +671,30 @@ public void testParallelUpdate() throws Exception { Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 2); Assert.assertNotNull(client.getCreatedResource(Deployment.class, "pulsar-spec-1-proxy-setz")); Assert.assertNotNull(client.getCreatedResource(Deployment.class, "pulsar-spec-1-proxy-seta")); - Assert.assertNotNull(proxyUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(proxyUpdateControl.getResource().get().getStatus().getLastApplied()); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); - Assert.assertNotNull(proxyUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(proxyUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putDeployment("pulsar-spec-1-proxy-setz", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); - Assert.assertNotNull(proxyUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(proxyUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putDeployment("pulsar-spec-1-proxy-seta", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); - Assert.assertNotNull(proxyUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(proxyUpdateControl.getResource().get().getStatus().getLastApplied()); // now update @@ -714,29 +714,29 @@ public void testParallelUpdate() throws Exception { seta: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 2); Assert.assertNotNull(client.getCreatedResource(Deployment.class, "pulsar-spec-1-proxy-setz")); Assert.assertNotNull(client.getCreatedResource(Deployment.class, "pulsar-spec-1-proxy-seta")); - Assert.assertNotNull(proxyUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(proxyUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putDeployment("pulsar-spec-1-proxy-setz", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); - Assert.assertNotNull(proxyUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(proxyUpdateControl.getResource().get().getStatus().getLastApplied()); resolver.putDeployment("pulsar-spec-1-proxy-seta", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); - Assert.assertNotNull(proxyUpdateControl.getResource().getStatus().getLastApplied()); + Assert.assertNotNull(proxyUpdateControl.getResource().get().getStatus().getLastApplied()); } @Test @@ -758,7 +758,7 @@ public void testDefineProxySetWithDefaultName() throws Exception { // verify order of sets follows the order declared in the spec Assert.assertNotNull(client.getCreatedResource(Deployment.class, "pulsar-spec-1-proxy-setz")); ProxyController.ProxySetsLastApplied proxySetsLastApplied = - SerializationUtil.readJson(proxyUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(proxyUpdateControl.getResource().get().getStatus().getLastApplied(), ProxyController.ProxySetsLastApplied.class); Assert.assertNotNull(proxySetsLastApplied.getSets().get("setz")); Assert.assertEquals(client.getDeletedResources().size(), 0); @@ -766,10 +766,10 @@ public void testDefineProxySetWithDefaultName() throws Exception { resolver.putDeployment("pulsar-spec-1-proxy-setz", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlInitializing(proxyUpdateControl); proxySetsLastApplied = - SerializationUtil.readJson(proxyUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(proxyUpdateControl.getResource().get().getStatus().getLastApplied(), ProxyController.ProxySetsLastApplied.class); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 1); Assert.assertNotNull(proxySetsLastApplied.getSets().get("proxy")); @@ -778,7 +778,7 @@ public void testDefineProxySetWithDefaultName() throws Exception { resolver.putDeployment("pulsar-spec-1-proxy", true); client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(proxyUpdateControl); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); @@ -791,10 +791,10 @@ public void testDefineProxySetWithDefaultName() throws Exception { setz: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(proxyUpdateControl); proxySetsLastApplied = - SerializationUtil.readJson(proxyUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(proxyUpdateControl.getResource().get().getStatus().getLastApplied(), ProxyController.ProxySetsLastApplied.class); Assert.assertNull(proxySetsLastApplied.getSets().get("proxy")); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); @@ -815,10 +815,10 @@ public void testDefineProxySetWithDefaultName() throws Exception { sets: {} """; client = new MockKubernetesClient(NAMESPACE, resolver); - proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource(), client); + proxyUpdateControl = invokeController(spec, proxyUpdateControl.getResource().get(), client); KubeTestUtil.assertUpdateControlReady(proxyUpdateControl); proxySetsLastApplied = - SerializationUtil.readJson(proxyUpdateControl.getResource().getStatus().getLastApplied(), + SerializationUtil.readJson(proxyUpdateControl.getResource().get().getStatus().getLastApplied(), ProxyController.ProxySetsLastApplied.class); Assert.assertNull(proxySetsLastApplied.getSets().get("setz")); Assert.assertEquals(client.getCreatedResources(Deployment.class).size(), 0); @@ -831,4 +831,4 @@ public void testDefineProxySetWithDefaultName() throws Exception { } -} +} \ No newline at end of file diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisionerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisionerTest.java index 93123e1a..50bb6da1 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisionerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisionerTest.java @@ -15,6 +15,7 @@ */ package com.datastax.oss.kaap.controllers.utils; +import com.datastax.oss.kaap.common.SerializationUtil; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; import com.datastax.oss.kaap.mocks.MockKubernetesClient; import io.fabric8.certmanager.api.model.v1.Certificate; @@ -451,7 +452,7 @@ public void testGeneratePerComponent() throws Exception { } private MockKubernetesClient generateCertificates(String spec) { - final PulsarClusterSpec pulsarClusterSpec = MockKubernetesClient.readYaml(spec, PulsarClusterSpec.class); + final PulsarClusterSpec pulsarClusterSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); final MockKubernetesClient mockKubernetesClient = new MockKubernetesClient(NAMESPACE); pulsarClusterSpec.getGlobal().applyDefaults(null); diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperControllerTest.java index 5a4e08c7..625e6cd2 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperControllerTest.java @@ -752,7 +752,7 @@ public void testEnvEmpty() throws Exception { ); final ZooKeeperFullSpec lastApplied = SerializationUtil.readJson(zooKeeperUpdateControl - .getResource().getStatus().getLastApplied(), ZooKeeperFullSpec.class); + .getResource().get().getStatus().getLastApplied(), ZooKeeperFullSpec.class); Assert.assertTrue(lastApplied.getZookeeper().getEnv().isEmpty()); } @@ -866,7 +866,7 @@ public void testSidecarsEmpty() throws Exception { ); final ZooKeeperFullSpec lastApplied = SerializationUtil.readJson(zooKeeperUpdateControl - .getResource().getStatus().getLastApplied(), ZooKeeperFullSpec.class); + .getResource().get().getStatus().getLastApplied(), ZooKeeperFullSpec.class); Assert.assertTrue(lastApplied.getZookeeper().getSidecars().isEmpty()); } diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperJobTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperJobTest.java index 88a56d7a..13dbf61e 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperJobTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperJobTest.java @@ -15,108 +15,98 @@ */ package com.datastax.oss.kaap.controllers.zookeeper; +import com.datastax.oss.kaap.common.SerializationUtil; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; -import com.datastax.oss.kaap.mocks.MockKubernetesClient; import io.fabric8.kubernetes.api.model.batch.v1.Job; import io.fabric8.kubernetes.api.model.batch.v1.JobBuilder; -import io.fabric8.kubernetes.client.server.mock.KubernetesServer; +import io.fabric8.kubernetes.client.KubernetesClient; +import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; +import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import java.net.HttpURLConnection; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; import lombok.SneakyThrows; import lombok.extern.jbosslog.JBossLog; -import org.testng.Assert; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; @JBossLog +@EnableKubernetesMockClient(https = false) public class ZooKeeperJobTest { private static final String NAMESPACE = "ns"; + KubernetesMockServer server; + KubernetesClient client; - @Builder(setterPrefix = "with") - public static class MockServer implements AutoCloseable { + enum CurrentJobState { + NotExists, + Running, + Completed + } - enum CurrentJobState { - NotExists, - Running, - Completed - } - @Data - @AllArgsConstructor - public static class Op { - String method; - } + @Data + @AllArgsConstructor + public static class Op { + String method; + } - List ops; - - private PulsarClusterSpec pulsarClusterSpec; - private CurrentJobState currentJobState; - KubernetesServer server; - - @SneakyThrows - void start() { - ops = new ArrayList<>(); - Objects.requireNonNull(currentJobState); - pulsarClusterSpec.getGlobal().applyDefaults(null); - pulsarClusterSpec.getZookeeper().applyDefaults(pulsarClusterSpec.getGlobalSpec()); - - - final String clusterSpecName = pulsarClusterSpec.getGlobal().getName(); - - server = new KubernetesServer(false); - server.before(); - - server.expect() - .post() - .withPath("/apis/batch/v1/namespaces/ns/jobs") - .andReply(HttpURLConnection.HTTP_OK, recordedRequest -> { - MockServer.this.ops.add(new Op("POST")); - return null; - }) - .once(); - - server.expect() - .delete() - .withPath("/apis/batch/v1/namespaces/ns/jobs/%s-zookeeper-metadata".formatted(clusterSpecName)) - .andReply(HttpURLConnection.HTTP_OK, recordedRequest -> { - MockServer.this.ops.add(new Op("DELETE")); - return null; - }) - .once(); - - - - final Job currentJob; - if (currentJobState == CurrentJobState.NotExists) { - currentJob = null; - } else { - currentJob = new JobBuilder() - .withNewMetadata() - .withName("%s-zookeeper-metadata".formatted(clusterSpecName)) - .endMetadata() - .withNewStatus() - .withSucceeded(currentJobState == CurrentJobState.Running ? 0 : 1) - .endStatus() - .build(); - } - - server.expect() - .get() - .withPath("/apis/batch/v1/namespaces/ns/jobs/%s-zookeeper-metadata".formatted(clusterSpecName)) - .andReturn(HttpURLConnection.HTTP_OK, currentJob) - .always(); + private final List ops = new ArrayList<>(); + + @SneakyThrows + private void setupMocks( + PulsarClusterSpec pulsarClusterSpec, + CurrentJobState currentJobState) { + + ops.clear(); + pulsarClusterSpec.getGlobal().applyDefaults(null); + pulsarClusterSpec.getZookeeper().applyDefaults(pulsarClusterSpec.getGlobalSpec()); + + + final String clusterSpecName = pulsarClusterSpec.getGlobal().getName(); + + server.expect() + .post() + .withPath("/apis/batch/v1/namespaces/ns/jobs") + .andReply(HttpURLConnection.HTTP_OK, recordedRequest -> { + ZooKeeperJobTest.this.ops.add(new Op("POST")); + return null; + }) + .once(); + + server.expect() + .delete() + .withPath("/apis/batch/v1/namespaces/ns/jobs/%s-zookeeper-metadata".formatted(clusterSpecName)) + .andReply(HttpURLConnection.HTTP_OK, recordedRequest -> { + ZooKeeperJobTest.this.ops.add(new Op("DELETE")); + return null; + }) + .once(); + + + final Job currentJob; + if (currentJobState == CurrentJobState.NotExists) { + currentJob = null; + } else { + currentJob = new JobBuilder() + .withNewMetadata() + .withName("%s-zookeeper-metadata".formatted(clusterSpecName)) + .endMetadata() + .withNewStatus() + .withSucceeded(currentJobState == CurrentJobState.Running ? 0 : 1) + .endStatus() + .build(); } - @Override - public void close() { - server.after(); - } + server.expect() + .get() + .withPath("/apis/batch/v1/namespaces/ns/jobs/%s-zookeeper-metadata".formatted(clusterSpecName)) + .andReturn(currentJob == null ? HttpURLConnection.HTTP_NOT_FOUND : HttpURLConnection.HTTP_OK, currentJob) + .always(); } + @Test public void testCreate() throws Exception { final String spec = """ @@ -126,9 +116,9 @@ public void testCreate() throws Exception { image: apachepulsar/pulsar:global """; - final MockServer server = invokeJobCreate(spec, MockServer.CurrentJobState.NotExists); - Assert.assertEquals(server.ops.size(), 1); - Assert.assertEquals(server.ops.get(0).method, "POST"); + invokeJobCreate(spec, CurrentJobState.NotExists); + Assertions.assertEquals(ops.size(), 1); + Assertions.assertEquals(ops.get(0).method, "POST"); } @@ -141,10 +131,10 @@ public void testRecreateIfRunning() throws Exception { image: apachepulsar/pulsar:global """; - final MockServer server = invokeJobCreate(spec, MockServer.CurrentJobState.Running); - Assert.assertEquals(server.ops.size(), 2); - Assert.assertEquals(server.ops.get(0).method, "DELETE"); - Assert.assertEquals(server.ops.get(1).method, "POST"); + invokeJobCreate(spec, CurrentJobState.Running); + Assertions.assertEquals(ops.size(), 2); + Assertions.assertEquals(ops.get(0).method, "DELETE"); + Assertions.assertEquals(ops.get(1).method, "POST"); } @@ -157,27 +147,21 @@ public void testDoNotRecreateIfCompleted() throws Exception { image: apachepulsar/pulsar:global """; - final MockServer server = invokeJobCreate(spec, MockServer.CurrentJobState.Completed); - Assert.assertEquals(server.ops.size(), 0); + invokeJobCreate(spec, CurrentJobState.Completed); + Assertions.assertEquals(ops.size(), 0); } - private MockServer invokeJobCreate(String spec, MockServer.CurrentJobState state) { + private void invokeJobCreate(String spec, CurrentJobState state) { - final PulsarClusterSpec clusterSpec = MockKubernetesClient.readYaml(spec, PulsarClusterSpec.class); + final PulsarClusterSpec clusterSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); - try (final MockServer server = MockServer.builder() - .withPulsarClusterSpec(clusterSpec) - .withCurrentJobState(state) - .build();) { - server.start(); + setupMocks(clusterSpec, state); - final ZooKeeperResourcesFactory factory = - new ZooKeeperResourcesFactory(server.server.getClient(), NAMESPACE, - clusterSpec.getZookeeper(), - clusterSpec.getGlobal(), - null); - factory.createMetadataInitializationJobIfNeeded(); - return server; - } + final ZooKeeperResourcesFactory factory = + new ZooKeeperResourcesFactory(client, NAMESPACE, + clusterSpec.getZookeeper(), + clusterSpec.getGlobal(), + null); + factory.createMetadataInitializationJobIfNeeded(); } -} +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3c68ae7e..5984e2ab 100644 --- a/pom.xml +++ b/pom.xml @@ -41,9 +41,10 @@ 17 UTF-8 UTF-8 - 6.9.3 + 7.2.1 - 6.13.4 + 7.3.1 + 5.1.0 7.7.0 4.10.0 1.18.42 @@ -71,6 +72,16 @@ pom import + + io.javaoperatorsdk + operator-framework-core + ${josdk.version} + + + io.javaoperatorsdk + micrometer-support + ${josdk.version} + io.quarkiverse.operatorsdk quarkus-operator-sdk-bom diff --git a/tests/pom.xml b/tests/pom.xml index 82bc1f53..aeba9a34 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -27,7 +27,7 @@ tests - 1.4.9 + 1.4.10 diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/LocalK8sEnvironment.java b/tests/src/test/java/com/datastax/oss/kaap/tests/LocalK8sEnvironment.java index 04319b3b..74760a35 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/LocalK8sEnvironment.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/LocalK8sEnvironment.java @@ -168,7 +168,7 @@ private static void addClusterToUserKubeConfig(Config containerKubeConfig) { .build()); } currentKubeConfig.setCurrentContext(clusterName); - KubeConfigUtils.persistKubeConfigIntoFile(currentKubeConfig, defaultKubeConfigPath.getAbsolutePath()); + KubeConfigUtils.persistKubeConfigIntoFile(currentKubeConfig, defaultKubeConfigPath.getAbsoluteFile()); log.info("Persisted new cluster {} to {}", clusterName, defaultKubeConfigPath.getAbsolutePath()); log.info("Persisted new context {} to {}", clusterName, defaultKubeConfigPath.getAbsolutePath()); log.info("Persisted new user {} to {}", clusterName, defaultKubeConfigPath.getAbsolutePath()); diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/AbstractK3sContainer.java b/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/AbstractK3sContainer.java index 107763cd..b1b7d3a9 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/AbstractK3sContainer.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/env/k3s/AbstractK3sContainer.java @@ -31,8 +31,8 @@ public abstract class AbstractK3sContainer implements AutoCloseable { public static final KubernetesImageSpec K3S_IMAGE = - new KubernetesImageSpec<>(K3sContainerVersion.VERSION_1_31_0) - .withImage("rancher/k3s:v1.31.6-k3s1"); + new KubernetesImageSpec<>(K3sContainerVersion.VERSION_1_33_4) + .withImage("rancher/k3s:v1.33.4-k3s1"); public abstract CompletableFuture start(); From 2639c2e1eece4788070e6bd3dba2a648155010ed Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Wed, 29 Oct 2025 17:40:29 +0530 Subject: [PATCH 34/69] [Release] Operator 0.4.0 (#212) * Revert "fix scm properties" This reverts commit 5bae946d9faed9060d34f50c2ea077a5c2fecc89. * Revert "fix scm properties" This reverts commit a42fb82a1f466db8713dc9dbc54e9ddd8357b659. * [maven-release-plugin] prepare release operator-0.4.0 * [maven-release-plugin] prepare for next development iteration --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 6 +++--- tests/pom.xml | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index 086ee789..fff1d58c 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 9c1cc0bf..a1b52f73 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index a0d5d7cd..09a6d1f5 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 5984e2ab..2925b6ac 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT operator-common operator @@ -30,8 +30,8 @@ Kaap :: Kubernetes Autoscaling for Apache Pulsar - scm:git:https://github.com/datastax/kaap.git - scm:git:https://github.com/datastax/kaap.git + scm:git:git@github.com:datastax/kaap.git + scm:git:git@github.com:datastax/kaap.git https://github.com/datastax/kaap HEAD diff --git a/tests/pom.xml b/tests/pom.xml index aeba9a34..1d07717c 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.0-SNAPSHOT + 0.4.1-SNAPSHOT 4.0.0 From 087d2d6d62733187944ea76c8baf7a9ca02e9f9b Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Wed, 29 Oct 2025 18:13:39 +0530 Subject: [PATCH 35/69] [Release] KAAP 0.4.0 (#213) * Upgrade default operator image version to 0.4.0 * Upgrade default kaap image version to 0.4.x in kaap-stack * Release kaap chart 0.4.0 --- helm/kaap-stack/Chart.yaml | 2 +- helm/kaap/Chart.yaml | 2 +- helm/kaap/values.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index 5ae07149..e3ca80f6 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -22,7 +22,7 @@ description: Kubernetes Autoscaling for Apache Pulsar Stack version: 0.3.4 dependencies: - name: kaap - version: 0.3.x + version: 0.4.x repository: file://../kaap - name: kube-prometheus-stack version: 62.3.0 diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 0e9923ab..d04111fe 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.4 +version: 0.4.0 diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index cf27de53..2fd887bd 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -38,7 +38,7 @@ fullnameOverride: "" operator: enabled: true watchAllNamespaces: false - image: datastax/kaap:0.3.4 + image: datastax/kaap:0.4.0 imagePullPolicy: IfNotPresent replicas: 1 nodeSelector: {} From b664b1b3e901d95ba1a063fc282e8821913a590a Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Wed, 29 Oct 2025 19:08:21 +0530 Subject: [PATCH 36/69] Release kaap stack chart 0.4.0 (#214) --- helm/kaap-stack/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index e3ca80f6..40fef2cb 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.3.4 +version: 0.4.0 dependencies: - name: kaap version: 0.4.x From ca9ded9451b049daf94731884a19fd1a84adceaa Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Wed, 29 Oct 2025 19:33:23 +0530 Subject: [PATCH 37/69] Updated RELEASE.md and updated chart-releaser version (#215) --- .github/workflows/ci-release-kaap-chart.yaml | 3 ++- .../workflows/ci-release-kaap-stack-chart.yaml | 3 ++- RELEASE.md | 15 +++++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-release-kaap-chart.yaml b/.github/workflows/ci-release-kaap-chart.yaml index f50efdcd..29ef0cca 100644 --- a/.github/workflows/ci-release-kaap-chart.yaml +++ b/.github/workflows/ci-release-kaap-chart.yaml @@ -31,10 +31,11 @@ jobs: helm package "$chart" --destination .cr-release-packages - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.5.0 + uses: helm/chart-releaser-action@v1.7.0 with: charts_dir: helm/kaap skip_packaging: true + skip_existing: true env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/ci-release-kaap-stack-chart.yaml b/.github/workflows/ci-release-kaap-stack-chart.yaml index 713bee7c..6d56969d 100644 --- a/.github/workflows/ci-release-kaap-stack-chart.yaml +++ b/.github/workflows/ci-release-kaap-stack-chart.yaml @@ -31,10 +31,11 @@ jobs: helm package "$chart" --destination .cr-release-packages - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.5.0 + uses: helm/chart-releaser-action@v1.7.0 with: charts_dir: helm/kaap-stack skip_packaging: true + skip_existing: true env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/RELEASE.md b/RELEASE.md index 2f7ba89f..a42817b7 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -5,7 +5,8 @@ The project contains 3 different and independents artifacts: 2. KAAP Chart 3. KAAP Stack Chart -The releases process are independent. +The releases process are independent. You can also do the release on a different branch and merge to main. +For reference, check [here.](https://github.com/datastax/kaap/pull/212) ## Operator image (datastax/kaap:latest) @@ -25,18 +26,24 @@ This will create a new tag `operator-`, bump the pom versions and push Run the following command: ```bash -./release/release.sh kaap +./release/release.sh kaap-chart ``` This will create a new tag `kaap-`, bump the chart version, creates a new Github release with the chart tarball and update the docs. +**NOTE:** You have to **manually update the default operator version** in the values.yaml of KAAP if you need to change it. +For reference, check [here.](https://github.com/datastax/kaap/pull/213/commits/ebc1bb38edeaf2164d6f2d7c1729ebfe8ed94db1) ## KAAP Stack Chart Run the following command: ```bash -./release/release.sh kaap-stack +./release/release.sh kaap-stack-chart ``` -This will create a new tag `kaap-stack-`, bump the chart version, creates a new Github release with the chart tarball and update the docs. \ No newline at end of file +This will create a new tag `kaap-stack-`, bump the chart version, creates a new Github release with the chart tarball and update the docs. + +**NOTE:** You have to **manually update the kaap version** if there is a major version change of KAAP in the KAAP-STACK +chart.yaml. Minor version changes get picked up because of the regex 0.4.x. +For reference, check [here.](https://github.com/datastax/kaap/pull/213/commits/853d3135e5eb6bd25d373e5506e14640083b2c04) \ No newline at end of file From 52bfa16020dc52cf5caa6ce2c03bc5e43261fb77 Mon Sep 17 00:00:00 2001 From: heesung <103456639+heesung-sohn@users.noreply.github.com> Date: Mon, 3 Nov 2025 09:07:44 -0800 Subject: [PATCH 38/69] Added entry_location_rocksdb.conf (#216) --- .../controllers/BaseResourcesFactory.java | 32 +++++++++++++++++++ .../AutorecoveryResourcesFactory.java | 10 +++++- .../BookKeeperResourcesFactory.java | 9 ++++++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java index 9cd61e05..475d868a 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java @@ -79,6 +79,8 @@ import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import lombok.extern.jbosslog.JBossLog; import org.apache.commons.codec.digest.DigestUtils; @@ -88,6 +90,15 @@ @JBossLog public abstract class BaseResourcesFactory { + // Regex to capture the version string after a colon and optionally extract major version + // This pattern looks for a colon, then captures the entire version string + // The first group (\\d+) specifically captures the major version + public static final Pattern IMAGE_STRING_PATTERN = Pattern.compile( + ":(?(\\d+)(?:\\.\\d+){0,2}(?:[\\-][a-zA-Z0-9\\.]+)?)"); + + public static final Pattern MAJOR_VERSION_PATTERN = Pattern.compile("^(\\d+)"); + + public static final String CONFIG_PULSAR_PREFIX = "PULSAR_PREFIX_"; public static final String DEPLOYMENT_REVISION_ANNOTATION = "deployment.kubernetes.io/revision"; protected final KubernetesClient client; @@ -1137,4 +1148,25 @@ protected static List getSidecars(List containers) { } return containers; } + + public int getPulsarMajorVersion(String imageString) { + int pulsarMajorVersion = 2; + if (imageString == null) { + return pulsarMajorVersion; + } + Matcher imageStringMatcher = IMAGE_STRING_PATTERN.matcher(imageString); + + if (imageStringMatcher.find()) { + String fullVersion = imageStringMatcher.group("fullVersion"); + System.out.println("Full Version: " + fullVersion); + // Extract the major version specifically from the fullVersion string + Matcher majorVersionMatcher = MAJOR_VERSION_PATTERN.matcher(fullVersion); + if (majorVersionMatcher.find()) { + String majorVersionStr = majorVersionMatcher.group(1); + System.out.println("Major Version: " + majorVersionStr); + pulsarMajorVersion = Integer.parseInt(majorVersionStr); + } + } + return pulsarMajorVersion; + } } diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java index c02fb7c4..0ce01c59 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java @@ -140,7 +140,15 @@ public void patchDeployment() { addTlsVolumes(volumeMounts, volumes, getTlsSecretNameForAutorecovery()); } String mainArg = "bin/apply-config-from-env.py conf/bookkeeper.conf && "; - if (tlsEnabledOnBookKeeper) { + + int pulsarMajorVersion = getPulsarMajorVersion(spec.getImage()); + if (pulsarMajorVersion >= 4) { + mainArg += "bin/update-ini-from-env.py conf/entry_location_rocksdb.conf PULSAR_PREFIX_entry_location_rocksdb_ && "; + } else if (pulsarMajorVersion >= 3) { + mainArg += "bin/apply-config-from-env.py conf/entry_location_rocksdb.conf --prefix PULSAR_PREFIX_entry_location_rocksdb_TableOptions_ && "; + } + + if (tlsEnabledOnBookKeeper) { mainArg += "openssl pkcs8 -topk8 -inform PEM -outform PEM -in /pulsar/certs/tls.key " + "-out /pulsar/tls-pk8.key -nocrypt && "; } diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java index dda0668a..6ab13acd 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java @@ -59,6 +59,7 @@ public class BookKeeperResourcesFactory extends BaseResourcesFactory getInitContainerNames(String clusterName, String baseName) { return List.of(getMainContainerName(clusterName, baseName)); } @@ -247,6 +248,14 @@ public StatefulSet generateStatefulSet() { ); String mainArg = "bin/apply-config-from-env.py conf/bookkeeper.conf && "; + + int pulsarMajorVersion = getPulsarMajorVersion(spec.getImage()); + if (pulsarMajorVersion >= 4) { + mainArg += "bin/update-ini-from-env.py conf/entry_location_rocksdb.conf PULSAR_PREFIX_entry_location_rocksdb_ && "; + } else if (pulsarMajorVersion >= 3) { + mainArg += "bin/apply-config-from-env.py conf/entry_location_rocksdb.conf --prefix PULSAR_PREFIX_entry_location_rocksdb_TableOptions_ && "; + } + final boolean tlsEnabledOnBookKeeper = isTlsEnabledOnBookKeeper(); if (tlsEnabledOnBookKeeper) { mainArg += From e92492082ae66c4a6bd8b3ed76efae22c75771f0 Mon Sep 17 00:00:00 2001 From: manas-ctds Date: Wed, 26 Nov 2025 17:33:27 +0530 Subject: [PATCH 39/69] Update brokerServiceUrl & brokerWebServiceUrl for function workers (#217) --- .../controllers/function/FunctionsWorkerResourcesFactory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java index 41cc238f..c451ca38 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java @@ -268,8 +268,8 @@ public void patchConfigMap() { if (isTlsEnabledOnBookKeeper()) { data.put("bookkeeperTLSClientAuthentication", "true"); } - final String brokerServiceUrl = getBrokerServiceUrl(); - final String brokerWebServiceUrl = getBrokerWebServiceUrl(); + final String brokerServiceUrl = enabledWithBroker ? getBrokerServiceUrlTls() : getBrokerServiceUrlPlain(); + final String brokerWebServiceUrl = enabledWithBroker ? getBrokerWebServiceUrlTls() : getBrokerWebServiceUrlPlain(); data.put("pulsarServiceUrl", brokerServiceUrl); data.put("pulsarWebServiceUrl", brokerWebServiceUrl); From d56ad82e9c216fa7babd78f3844a920917e84cd2 Mon Sep 17 00:00:00 2001 From: manas-ctds Date: Fri, 28 Nov 2025 17:46:23 +0530 Subject: [PATCH 40/69] [Release] Operator 0.4.1 (#218) * [maven-release-plugin] prepare release operator-0.4.1 * [maven-release-plugin] prepare for next development iteration --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index fff1d58c..11ba1c56 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.1-SNAPSHOT + 0.4.2-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index a1b52f73..6a2b45d3 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.1-SNAPSHOT + 0.4.2-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index 09a6d1f5..d29cfc6d 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.1-SNAPSHOT + 0.4.2-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 2925b6ac..30b624ab 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.4.1-SNAPSHOT + 0.4.2-SNAPSHOT operator-common operator diff --git a/tests/pom.xml b/tests/pom.xml index 1d07717c..a276f31c 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.1-SNAPSHOT + 0.4.2-SNAPSHOT 4.0.0 From 9f2356060801edaa14f45e6319a99aa12accf185 Mon Sep 17 00:00:00 2001 From: manas-ctds Date: Fri, 28 Nov 2025 18:55:35 +0530 Subject: [PATCH 41/69] [Release] kaap 0.4.1 (#220) * Update default operator image version to 0.4.1 * Release kaap chart 0.4.1 --- helm/kaap/Chart.yaml | 2 +- helm/kaap/values.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index d04111fe..5286cf90 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.4.0 +version: 0.4.1 diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 2fd887bd..21e3a601 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -38,7 +38,7 @@ fullnameOverride: "" operator: enabled: true watchAllNamespaces: false - image: datastax/kaap:0.4.0 + image: datastax/kaap:0.4.1 imagePullPolicy: IfNotPresent replicas: 1 nodeSelector: {} From 8ad82f3afa3859baa4c997eaf6d7586f45d15102 Mon Sep 17 00:00:00 2001 From: manas-ctds Date: Tue, 2 Dec 2025 22:10:48 +0530 Subject: [PATCH 42/69] [Release] kaap stack chart 0.4.1 (#221) --- helm/kaap-stack/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index 40fef2cb..e2ca8a7f 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.4.0 +version: 0.4.1 dependencies: - name: kaap version: 0.4.x From e74e861b5e11c2af28fb453172425a3baf921b1e Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Wed, 3 Dec 2025 06:22:25 -0600 Subject: [PATCH 43/69] update version of chart-releaser action (#222) This fixes an issue when using skip_packaging=true Use a commit hash for the version until there is a new release of the action. https://github.com/helm/chart-releaser-action/issues/171 The commit hash being used is https://github.com/helm/chart-releaser-action/commit/3e001cb8c68933439c7e721650f20a07a1a5c61e --- .github/workflows/ci-release-kaap-chart.yaml | 4 ++-- .github/workflows/ci-release-kaap-stack-chart.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-release-kaap-chart.yaml b/.github/workflows/ci-release-kaap-chart.yaml index 29ef0cca..c2ed17d4 100644 --- a/.github/workflows/ci-release-kaap-chart.yaml +++ b/.github/workflows/ci-release-kaap-chart.yaml @@ -31,7 +31,7 @@ jobs: helm package "$chart" --destination .cr-release-packages - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.7.0 + uses: helm/chart-releaser-action@3e001cb8c68933439c7e721650f20a07a1a5c61e with: charts_dir: helm/kaap skip_packaging: true @@ -52,4 +52,4 @@ jobs: git add kaap/README.md git commit -m "kaap/README.md" git pull --rebase origin gh-pages - git push origin gh-pages \ No newline at end of file + git push origin gh-pages diff --git a/.github/workflows/ci-release-kaap-stack-chart.yaml b/.github/workflows/ci-release-kaap-stack-chart.yaml index 6d56969d..a5a77420 100644 --- a/.github/workflows/ci-release-kaap-stack-chart.yaml +++ b/.github/workflows/ci-release-kaap-stack-chart.yaml @@ -31,7 +31,7 @@ jobs: helm package "$chart" --destination .cr-release-packages - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.7.0 + uses: helm/chart-releaser-action@3e001cb8c68933439c7e721650f20a07a1a5c61e with: charts_dir: helm/kaap-stack skip_packaging: true @@ -52,4 +52,4 @@ jobs: git add kaap-stack/README.md git commit -m "kaap-stack/README.md" git pull --rebase origin gh-pages - git push origin gh-pages \ No newline at end of file + git push origin gh-pages From 748d726ed6fe9e16f9674e8c817ca99d47d9c3b8 Mon Sep 17 00:00:00 2001 From: heesung <103456639+heesung-sohn@users.noreply.github.com> Date: Wed, 17 Dec 2025 10:46:49 -0800 Subject: [PATCH 44/69] [proxy] set tlsEnabledWithKeyStore to false (#223) --- .../migrationtool/PulsarClusterResourceGeneratorTest.java | 6 +++--- .../oss/kaap/controllers/proxy/ProxyResourcesFactory.java | 2 -- .../oss/kaap/controllers/proxy/ProxyControllerTest.java | 3 --- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java index 565d2b33..36d3b321 100644 --- a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java +++ b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java @@ -58,7 +58,7 @@ public void test() throws Exception { final DiffCollectorOutputWriter diff = generate(client, tmpDir); final File outputDir = new File(tmpDir.toFile(), CONTEXT); assertValue(outputDir); - assertDiff(diff, 159); + assertDiff(diff, 157); } @Test @@ -74,7 +74,7 @@ public void testNoFunctions() throws Exception { final DiffCollectorOutputWriter diff = generate(client, tmpDir); final File outputDir = new File(tmpDir.toFile(), CONTEXT); final PulsarCluster pulsar = getPulsarClusterFromOutputdir(outputDir); - assertDiff(diff, 120); + assertDiff(diff, 118); Assert.assertEquals(pulsar.getSpec().getFunctionsWorker().getReplicas(), 0); } @@ -91,7 +91,7 @@ public void testNoBastion() throws Exception { final DiffCollectorOutputWriter diff = generate(client, tmpDir); final File outputDir = new File(tmpDir.toFile(), CONTEXT); final PulsarCluster pulsar = getPulsarClusterFromOutputdir(outputDir); - assertDiff(diff, 152); + assertDiff(diff, 150); Assert.assertEquals(pulsar.getSpec().getBastion().getReplicas(), 0); } diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java index 240b2b23..ede991c6 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java @@ -249,7 +249,6 @@ public void patchConfigMap() { final boolean tlsEnabledOnProxySet = isTlsEnabledOnProxySet(proxySet); final boolean tlsEnabledWithBroker = getTlsConfigForProxySet(proxySet).getEnabledWithBroker(); if (tlsEnabledOnProxySet) { - data.put("tlsEnabledWithKeyStore", "true"); data.put("tlsKeyStore", "/pulsar/tls.keystore.jks"); data.put("tlsTrustStore", "/pulsar/tls.truststore.jks"); data.put("brokerClientTlsTrustStore", "/pulsar/tls.truststore.jks"); @@ -341,7 +340,6 @@ public void patchConfigMapWsConfig() { data.put("tlsEnabled", "true"); data.put("tlsCertificateFilePath", "/pulsar/certs/tls.crt"); data.put("tlsKeyFilePath", "/pulsar/tls-pk8.key"); - data.put("tlsEnabledWithKeyStore", "true"); data.put("tlsKeyStore", "/pulsar/tls.keystore.jks"); data.put("tlsTrustStore", "/pulsar/tls.truststore.jks"); if (getTlsConfigForProxySet(proxySet).getEnabledWithBroker()) { diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java index 0f581658..f07d06ef 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java @@ -541,7 +541,6 @@ public void testTlsEnabledOnProxy() throws Exception { expectedData.put("PULSAR_LOG_ROOT_LEVEL", "info"); expectedData.put("PULSAR_EXTRA_OPTS", "-Dpulsar.log.root.level=info"); expectedData.put("PULSAR_PREFIX_numHttpServerThreads", "10"); - expectedData.put("PULSAR_PREFIX_tlsEnabledWithKeyStore", "true"); expectedData.put("PULSAR_PREFIX_tlsKeyStore", "/pulsar/tls.keystore.jks"); expectedData.put("PULSAR_PREFIX_tlsTrustStore", "/pulsar/tls.truststore.jks"); expectedData.put("PULSAR_PREFIX_brokerClientTlsTrustStore", "/pulsar/tls.truststore.jks"); @@ -584,7 +583,6 @@ public void testTlsEnabledOnProxy() throws Exception { wsExpectedData.put("PULSAR_PREFIX_tlsEnabled", "true"); wsExpectedData.put("PULSAR_PREFIX_tlsCertificateFilePath", "/pulsar/certs/tls.crt"); wsExpectedData.put("PULSAR_PREFIX_tlsKeyFilePath", "/pulsar/tls-pk8.key"); - wsExpectedData.put("PULSAR_PREFIX_tlsEnabledWithKeyStore", "true"); wsExpectedData.put("PULSAR_PREFIX_tlsKeyStore", "/pulsar/tls.keystore.jks"); wsExpectedData.put("PULSAR_PREFIX_tlsTrustStore", "/pulsar/tls.truststore.jks"); wsExpectedData.put("PULSAR_PREFIX_brokerClientTlsEnabled", "true"); @@ -1805,7 +1803,6 @@ public void testKafkaTls() throws Exception { expectedData.put("PULSAR_LOG_ROOT_LEVEL", "info"); expectedData.put("PULSAR_EXTRA_OPTS", "-Dpulsar.log.root.level=info"); expectedData.put("PULSAR_PREFIX_numHttpServerThreads", "10"); - expectedData.put("PULSAR_PREFIX_tlsEnabledWithKeyStore", "true"); expectedData.put("PULSAR_PREFIX_tlsKeyStore", "/pulsar/tls.keystore.jks"); expectedData.put("PULSAR_PREFIX_tlsTrustStore", "/pulsar/tls.truststore.jks"); expectedData.put("PULSAR_PREFIX_brokerClientTlsTrustStore", "/pulsar/tls.truststore.jks"); From 8778fc990badb8b7647ab926987177a0ad798585 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Wed, 17 Dec 2025 12:51:29 -0600 Subject: [PATCH 45/69] Update load balancer dashboard for pulsar 3.x (#210) Co-authored-by: mukesh-ctds --- .../grafana-dashboards/load-balance.json | 3080 ++--------------- 1 file changed, 229 insertions(+), 2851 deletions(-) diff --git a/helm/kaap-stack/grafana-dashboards/load-balance.json b/helm/kaap-stack/grafana-dashboards/load-balance.json index 1d4f106e..a68bbab0 100644 --- a/helm/kaap-stack/grafana-dashboards/load-balance.json +++ b/helm/kaap-stack/grafana-dashboards/load-balance.json @@ -3,31 +3,43 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", + "target": { + "limit": 100, + "matchAny": false, + "tags": [], + "type": "dashboard" + }, "type": "dashboard" } ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 12, - "iteration": 1621329296794, + "id": 49, "links": [], + "liveNow": false, "panels": [ { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -54,9 +66,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", @@ -66,6 +79,10 @@ "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_cpu_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -73,9 +90,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "CPU Usage", "tooltip": { "shared": true, @@ -84,33 +99,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -118,10 +124,13 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -148,9 +157,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", @@ -160,6 +170,10 @@ "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_memory_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -167,9 +181,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Memory Usage", "tooltip": { "shared": true, @@ -178,38 +190,32 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { "collapsed": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "gridPos": { "h": 1, "w": 24, @@ -218,6 +224,15 @@ }, "id": 15, "panels": [], + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "refId": "A" + } + ], "title": "Totals", "type": "row" }, @@ -226,10 +241,13 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -256,9 +274,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", @@ -268,6 +287,10 @@ "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_bandwidth_in_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -275,9 +298,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Bandwidth In Usage", "tooltip": { "shared": true, @@ -286,33 +307,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -320,10 +332,13 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -350,9 +365,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", @@ -362,6 +378,10 @@ "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_directMemory_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -369,9 +389,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Direct Memory Usage", "tooltip": { "shared": true, @@ -380,33 +398,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -414,10 +423,13 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -444,9 +456,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", @@ -456,6 +469,10 @@ "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_bandwidth_out_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -463,9 +480,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Bandwidth Out Usage", "tooltip": { "shared": true, @@ -474,33 +489,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -508,11 +514,14 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -539,9 +548,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", @@ -551,16 +561,20 @@ "steppedLine": false, "targets": [ { - "expr": "pulsar_lb_unload_broker_count{kubernetes_pod_name=~\"$instance\"}", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "editorMode": "code", + "expr": "pulsar_lb_unload_broker_total{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", + "range": true, "refId": "A" } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Unload Broker Total", "tooltip": { "shared": true, @@ -569,33 +583,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -603,11 +608,14 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -634,9 +642,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", @@ -646,16 +655,18 @@ "steppedLine": false, "targets": [ { - "expr": "pulsar_lb_unload_bundle_count{kubernetes_pod_name=~\"$instance\"}", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "pulsar_lb_unload_bundle_total{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Unload Bundle Total", "tooltip": { "shared": true, @@ -664,33 +675,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -698,11 +700,14 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -729,9 +734,10 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", @@ -741,16 +747,18 @@ "steppedLine": false, "targets": [ { - "expr": "pulsar_lb_bundles_split_count{kubernetes_pod_name=~\"$instance\"}", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "pulsar_lb_bundles_split_total{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Bundles Split Total", "tooltip": { "shared": true, @@ -759,38 +767,32 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { "collapsed": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "gridPos": { "h": 1, "w": 24, @@ -800,7 +802,15 @@ "id": 13, "panels": [], "repeat": "instance", - "scopedVars": {}, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "refId": "A" + } + ], "title": "$instance", "type": "row" }, @@ -809,11 +819,14 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -840,19 +853,23 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", - "scopedVars": {}, "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_cpu_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -869,9 +886,7 @@ "yaxis": "left" } ], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "CPU Usage", "tooltip": { "shared": true, @@ -880,33 +895,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -914,11 +920,14 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -945,19 +954,23 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", - "scopedVars": {}, "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_memory_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -965,9 +978,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Memory", "tooltip": { "shared": true, @@ -976,33 +987,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -1010,11 +1012,14 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -1041,19 +1046,23 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", - "scopedVars": {}, "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_directMemory_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -1061,9 +1070,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Direct Memory", "tooltip": { "shared": true, @@ -1072,33 +1079,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -1106,11 +1104,14 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -1137,19 +1138,23 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", - "scopedVars": {}, "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_bandwidth_in_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -1157,9 +1162,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Bandwidth In", "tooltip": { "shared": true, @@ -1168,33 +1171,24 @@ }, "type": "graph", "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } }, { @@ -1202,11 +1196,14 @@ "bars": false, "dashLength": 10, "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "links": [] }, "overrides": [] }, @@ -1233,19 +1230,23 @@ "linewidth": 1, "nullPointMode": "null", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, + "pluginVersion": "9.2.4", "pointradius": 2, "points": false, "renderer": "flot", - "scopedVars": {}, "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_lb_bandwidth_out_usage{kubernetes_pod_name=~\"$instance\"}", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", @@ -1253,9 +1254,7 @@ } ], "thresholds": [], - "timeFrom": null, "timeRegions": [], - "timeShift": null, "title": "Bandwidth Out", "tooltip": { "shared": true, @@ -1264,2680 +1263,58 @@ }, "type": "graph", "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 42 - }, - "id": 52, - "panels": [], - "repeat": null, - "repeatIteration": 1621329296794, - "repeatPanelId": 13, - "scopedVars": {}, - "title": "$instance", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 0, - "y": 43 - }, - "hiddenSeries": false, - "id": 53, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 8, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_cpu_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 85, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, "mode": "time", - "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true }, { "format": "short", - "label": null, "logBase": 1, - "max": null, - "min": null, "show": true } ], "yaxis": { - "align": false, - "alignLevel": null + "align": false } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} + } + ], + "refresh": "1m", + "schemaVersion": 37, + "style": "dark", + "tags": [], + "templating": { + "list": [ + { + "current": { + "selected": false, + "text": "All", + "value": "$__all" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 5, - "y": 43 - }, - "hiddenSeries": false, - "id": 54, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 5, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_memory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} + "definition": "pulsar_lb_memory_usage{job=~\"broker.*\", kubernetes_pod_name=~\".+\"}", + "hide": 0, + "includeAll": true, + "multi": false, + "name": "instance", + "options": [], + "query": { + "query": "pulsar_lb_memory_usage{job=~\"broker.*\", kubernetes_pod_name=~\".+\"}", + "refId": "Prometheus-instance-Variable-Query" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 10, - "y": 43 - }, - "hiddenSeries": false, - "id": 55, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 9, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_directMemory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 14, - "y": 43 - }, - "hiddenSeries": false, - "id": 56, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 4, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_in_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth In", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 18, - "y": 43 - }, - "hiddenSeries": false, - "id": 57, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 6, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_out_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth Out", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 51 - }, - "id": 58, - "panels": [], - "repeat": null, - "repeatIteration": 1621329296794, - "repeatPanelId": 13, - "scopedVars": {}, - "title": "$instance", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 0, - "y": 52 - }, - "hiddenSeries": false, - "id": 59, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 8, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_cpu_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 85, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 5, - "y": 52 - }, - "hiddenSeries": false, - "id": 60, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 5, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_memory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 10, - "y": 52 - }, - "hiddenSeries": false, - "id": 61, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 9, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_directMemory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 14, - "y": 52 - }, - "hiddenSeries": false, - "id": 62, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 4, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_in_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth In", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 18, - "y": 52 - }, - "hiddenSeries": false, - "id": 63, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 6, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_out_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth Out", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 60 - }, - "id": 64, - "panels": [], - "repeat": null, - "repeatIteration": 1621329296794, - "repeatPanelId": 13, - "scopedVars": {}, - "title": "$instance", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 0, - "y": 61 - }, - "hiddenSeries": false, - "id": 65, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 8, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_cpu_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 85, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 5, - "y": 61 - }, - "hiddenSeries": false, - "id": 66, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 5, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_memory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 10, - "y": 61 - }, - "hiddenSeries": false, - "id": 67, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 9, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_directMemory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 14, - "y": 61 - }, - "hiddenSeries": false, - "id": 68, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 4, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_in_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth In", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 18, - "y": 61 - }, - "hiddenSeries": false, - "id": 69, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 6, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_out_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth Out", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 69 - }, - "id": 70, - "panels": [], - "repeat": null, - "repeatIteration": 1621329296794, - "repeatPanelId": 13, - "scopedVars": {}, - "title": "$instance", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 0, - "y": 70 - }, - "hiddenSeries": false, - "id": 71, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 8, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_cpu_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 85, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 5, - "y": 70 - }, - "hiddenSeries": false, - "id": 72, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 5, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_memory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 10, - "y": 70 - }, - "hiddenSeries": false, - "id": 73, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 9, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_directMemory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 14, - "y": 70 - }, - "hiddenSeries": false, - "id": 74, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 4, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_in_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth In", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 18, - "y": 70 - }, - "hiddenSeries": false, - "id": 75, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 6, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_out_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth Out", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 78 - }, - "id": 76, - "panels": [], - "repeat": null, - "repeatIteration": 1621329296794, - "repeatPanelId": 13, - "scopedVars": {}, - "title": "$instance", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 0, - "y": 79 - }, - "hiddenSeries": false, - "id": 77, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 8, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_cpu_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 85, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 5, - "x": 5, - "y": 79 - }, - "hiddenSeries": false, - "id": 78, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 5, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_memory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 10, - "y": 79 - }, - "hiddenSeries": false, - "id": 79, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 9, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_directMemory_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 14, - "y": 79 - }, - "hiddenSeries": false, - "id": 80, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 4, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_in_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth In", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 4, - "x": 18, - "y": 79 - }, - "hiddenSeries": false, - "id": 81, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "repeatIteration": 1621329296794, - "repeatPanelId": 6, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_lb_bandwidth_out_usage{kubernetes_pod_name=~\"$instance\"}", - "interval": "", - "legendFormat": "{{ kubernetes_pod_name }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bandwidth Out", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "1m", - "schemaVersion": 25, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": { - "selected": true, - "text": "All", - "value": "$__all" - }, - "datasource": "Prometheus", - "definition": "pulsar_lb_memory_usage{job=~\"broker.*\", kubernetes_pod_name=~\".+\"}", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "instance", - "options": [ - { - "selected": true, - "text": "All", - "value": "$__all" - } - ], - "query": "pulsar_lb_memory_usage{job=~\"broker.*\", kubernetes_pod_name=~\".+\"}", "refresh": 1, "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", "skipUrlSync": false, "sort": 0, "tagValuesQuery": "", - "tags": [], "tagsQuery": "", "type": "query", "useTags": false @@ -3962,7 +1339,8 @@ ] }, "timezone": "", - "title": "Pulsar / Load Balancing", - "uid": "WLVt6P_Mk", - "version": 1 + "title": "Pulsar / Load Balancing - 3.1", + "uid": "Mcz1HWESz", + "version": 2, + "weekStart": "" } \ No newline at end of file From 7388cf40f20206ebea480f1d0d896c8438bcac5a Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Wed, 17 Dec 2025 16:59:39 -0600 Subject: [PATCH 46/69] update readme and pulsar example values (#225) --- README.md | 27 +++++++++++++++++---------- helm/examples/dev-cluster/values.yaml | 4 ++-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7d204cf6..555fdba3 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Full documentation is available in the [DataStax Streaming Documentation](https: ## Install KAAP Operator -This example installs only the KAAP operator. +This example installs only the KAAP operator without a managed Pulsar cluster. See the KAAP Stack below to install KAAP with an operator, a Pulsar cluster, and the Prometheus monitoring stack. 1. Install the DataStax KAAP Helm repository: @@ -55,10 +55,11 @@ helm install kaap kaap/kaap Result: ``` NAME: kaap -LAST DEPLOYED: Wed Jun 28 11:37:45 2023 -NAMESPACE: pulsar-cluster +LAST DEPLOYED: Wed Dec 17 12:11:51 2025 +NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None ``` 3. Ensure the operator is up and running: @@ -91,11 +92,16 @@ pulsarclusters.kaap.oss.datastax.com 2023-06-28T15:37:41Z zookeepers.kaap.oss.datastax.com 2023-06-28T15:37:41Z ``` -For more, see the [DataStax Streaming Documentation](https://docs.datastax.com/en/streaming/kaap-operator/latest/index.html) or [this repo's GitHub Pages site](https://datastax.github.io/kaap/docs/). +For more information, see the [DataStax Streaming Documentation](https://docs.datastax.com/en/streaming/kaap-operator/latest/index.html) or [this repo's GitHub Pages site](https://datastax.github.io/kaap/docs/). + +## Install KAAP Stack with a Pulsar cluster + +This example deploys a KAAP operator, and also deploys a minimally-sized Pulsar cluster for development testing. -## Install KAAP Stack Operator with a Pulsar cluster +> [!IMPORTANT] +> If using a local Kubernetes environment like [kind](https://kind.sigs.k8s.io/) or [minikube](https://minikube.sigs.k8s.io/docs/) you will need to allocate at least 16 GB of memory to run the +> example development cluster. -This example deploys a KAAP stack operator, and also deploys a minimally-sized Pulsar cluster for development testing. 1. Install the DataStax KAAP Helm repository: ``` @@ -104,15 +110,16 @@ helm repo update ``` 2. Install the KAAP Stack operator Helm chart with the custom `dev-cluster` values file: ``` -helm install pulsar kaap/kaap-stack --values helm/examples/dev-cluster/values.yaml +helm install kaap-stack kaap/kaap-stack --values helm/examples/dev-cluster/values.yaml ``` Result: ``` -NAME: pulsar -LAST DEPLOYED: Thu Jun 29 14:30:20 2023 +NAME: kaap-stack +LAST DEPLOYED: Wed Dec 17 12:25:16 2025 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None ``` 3. Ensure the operator is up and running: @@ -157,7 +164,7 @@ For more, see the [DataStax Streaming Documentation](https://docs.datastax.com/e To uninstall KAAP: ``` -helm delete kaap +helm uninstall kaap ``` Result: ``` diff --git a/helm/examples/dev-cluster/values.yaml b/helm/examples/dev-cluster/values.yaml index 972a0a8f..5f4d094a 100644 --- a/helm/examples/dev-cluster/values.yaml +++ b/helm/examples/dev-cluster/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: apachepulsar/pulsar:3.0.0 + image: apachepulsar/pulsar:4.0.7 restartOnConfigMapChange: true zookeeper: replicas: 1 @@ -95,4 +95,4 @@ pulsarGrafanaDashboards: kube-prometheus-stack: enabled: true grafana: - adminPassword: grafana1 \ No newline at end of file + adminPassword: grafana1 From ceaaf11c55846ac0256ba40894f34dbc27f204b9 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Wed, 17 Dec 2025 17:03:12 -0600 Subject: [PATCH 47/69] upgrade lunastreaming version to 3.x in examples (#226) --- helm/examples/admin-console/values.yaml | 4 ++-- helm/examples/bkvm/values.yaml | 4 ++-- helm/examples/bookie-autoscaling/values.yaml | 2 +- helm/examples/bookie-racks/values.yaml | 4 ++-- helm/examples/broker-autoscaling/values.yaml | 2 +- helm/examples/cert-manager-acme/values.yaml | 2 +- helm/examples/cert-manager-self-signed/values.yaml | 2 +- helm/examples/grafana/values.yaml | 4 ++-- helm/examples/kafka/values.yaml | 2 +- helm/examples/keycloak/values.yaml | 2 +- helm/examples/racks/values.yaml | 2 +- helm/examples/resource-sets/values.yaml | 2 +- helm/examples/tiered-storage/values.yaml | 2 +- helm/examples/zoned-resource-sets/values.yaml | 2 +- 14 files changed, 18 insertions(+), 18 deletions(-) diff --git a/helm/examples/admin-console/values.yaml b/helm/examples/admin-console/values.yaml index 4db7d05e..53488802 100644 --- a/helm/examples/admin-console/values.yaml +++ b/helm/examples/admin-console/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true storage: existingStorageClassName: default @@ -169,4 +169,4 @@ pulsarGrafanaDashboards: kube-prometheus-stack: enabled: true grafana: - adminPassword: grafana1 \ No newline at end of file + adminPassword: grafana1 diff --git a/helm/examples/bkvm/values.yaml b/helm/examples/bkvm/values.yaml index 45ab82c8..fa6ee756 100644 --- a/helm/examples/bkvm/values.yaml +++ b/helm/examples/bkvm/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true storage: existingStorageClassName: default @@ -75,4 +75,4 @@ bkvm: resources: requests: cpu: "0.5" - memory: "128Mi" \ No newline at end of file + memory: "128Mi" diff --git a/helm/examples/bookie-autoscaling/values.yaml b/helm/examples/bookie-autoscaling/values.yaml index 8715c3b6..e4502e14 100644 --- a/helm/examples/bookie-autoscaling/values.yaml +++ b/helm/examples/bookie-autoscaling/values.yaml @@ -22,7 +22,7 @@ cluster: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true storage: existingStorageClassName: default diff --git a/helm/examples/bookie-racks/values.yaml b/helm/examples/bookie-racks/values.yaml index 4b016eb3..e030ebe6 100644 --- a/helm/examples/bookie-racks/values.yaml +++ b/helm/examples/bookie-racks/values.yaml @@ -20,7 +20,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_2.11 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true tls: enabled: true @@ -122,4 +122,4 @@ cert-manager: installCRDs: true global: leaderElection: - namespace: default \ No newline at end of file + namespace: default diff --git a/helm/examples/broker-autoscaling/values.yaml b/helm/examples/broker-autoscaling/values.yaml index b675beb0..07d9c9e2 100644 --- a/helm/examples/broker-autoscaling/values.yaml +++ b/helm/examples/broker-autoscaling/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true storage: existingStorageClassName: default diff --git a/helm/examples/cert-manager-acme/values.yaml b/helm/examples/cert-manager-acme/values.yaml index 2553255d..4d0ba856 100644 --- a/helm/examples/cert-manager-acme/values.yaml +++ b/helm/examples/cert-manager-acme/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true antiAffinity: host: diff --git a/helm/examples/cert-manager-self-signed/values.yaml b/helm/examples/cert-manager-self-signed/values.yaml index 8d9fe55d..69984d18 100644 --- a/helm/examples/cert-manager-self-signed/values.yaml +++ b/helm/examples/cert-manager-self-signed/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true # dnsName: add here your public dns name tls: diff --git a/helm/examples/grafana/values.yaml b/helm/examples/grafana/values.yaml index 1f69a592..367efd90 100644 --- a/helm/examples/grafana/values.yaml +++ b/helm/examples/grafana/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 storage: existingStorageClassName: default zookeeper: @@ -79,4 +79,4 @@ pulsarGrafanaDashboards: kube-prometheus-stack: enabled: true grafana: - adminPassword: grafana1 \ No newline at end of file + adminPassword: grafana1 diff --git a/helm/examples/kafka/values.yaml b/helm/examples/kafka/values.yaml index 890d570e..5415ec2a 100644 --- a/helm/examples/kafka/values.yaml +++ b/helm/examples/kafka/values.yaml @@ -23,7 +23,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true antiAffinity: host: diff --git a/helm/examples/keycloak/values.yaml b/helm/examples/keycloak/values.yaml index 3d26e1e2..d20b5231 100644 --- a/helm/examples/keycloak/values.yaml +++ b/helm/examples/keycloak/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 auth: enabled: true storage: diff --git a/helm/examples/racks/values.yaml b/helm/examples/racks/values.yaml index 52584ab8..2d6e1d93 100644 --- a/helm/examples/racks/values.yaml +++ b/helm/examples/racks/values.yaml @@ -22,7 +22,7 @@ cluster: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_2.11 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true storage: existingStorageClassName: default diff --git a/helm/examples/resource-sets/values.yaml b/helm/examples/resource-sets/values.yaml index 5ceeb27f..19bbde3c 100644 --- a/helm/examples/resource-sets/values.yaml +++ b/helm/examples/resource-sets/values.yaml @@ -22,7 +22,7 @@ cluster: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true storage: existingStorageClassName: default diff --git a/helm/examples/tiered-storage/values.yaml b/helm/examples/tiered-storage/values.yaml index 06d1977f..0c8a4708 100644 --- a/helm/examples/tiered-storage/values.yaml +++ b/helm/examples/tiered-storage/values.yaml @@ -21,7 +21,7 @@ kaap: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_2.11 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true storage: existingStorageClassName: default diff --git a/helm/examples/zoned-resource-sets/values.yaml b/helm/examples/zoned-resource-sets/values.yaml index 30a438ca..5aa5132f 100644 --- a/helm/examples/zoned-resource-sets/values.yaml +++ b/helm/examples/zoned-resource-sets/values.yaml @@ -22,7 +22,7 @@ cluster: spec: global: name: pulsar - image: datastax/lunastreaming-all:2.10_3.4 + image: datastax/lunastreaming-all:3.1.4_21 restartOnConfigMapChange: true storage: existingStorageClassName: default From d7136a8eb93cffe667538aa7f913c6f2c52c13bd Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Thu, 18 Dec 2025 10:38:35 -0600 Subject: [PATCH 48/69] update grafana example to include persistence (#227) * update grafana example to include persistence * fixes from comments decrease dashboard volume size allow dashboard updates --- helm/examples/grafana/README.md | 22 +++++++++++++++++++++- helm/examples/grafana/values.yaml | 15 +++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/helm/examples/grafana/README.md b/helm/examples/grafana/README.md index 1699441e..5349252d 100644 --- a/helm/examples/grafana/README.md +++ b/helm/examples/grafana/README.md @@ -2,7 +2,7 @@ Install a Pulsar cluster with prometheus stack enabled and Pulsar grafana dashboards. ``` -helm install pstack -n pstack --create-namespace kaap/kaap-stack --values helm/examples/grafana/values.yaml +helm install kaap-stack kaap/kaap-stack --values helm/examples/grafana/values.yaml ``` Login to grafana UI: @@ -11,3 +11,23 @@ kubectl port-forward deployment/pstack-grafana 3000:3000 open localhost:3000 ``` Login using the credentials configured in the values.yaml. (`admin` and `grafana1`). + +This example includes grafana persistence config to allow new dashboards to be created +and saved across restarts of grafana. + +``` +kube-prometheus-stack: + enabled: true + grafana: + adminPassword: grafana1 + # Make Grafana persistent (Using Statefulset) + persistence: + enabled: true + type: sts + # storageClassName: "storageClassName" + accessModes: + - ReadWriteOnce + size: 5Gi + finalizers: + - kubernetes.io/pvc-protection +``` diff --git a/helm/examples/grafana/values.yaml b/helm/examples/grafana/values.yaml index 367efd90..168b31a0 100644 --- a/helm/examples/grafana/values.yaml +++ b/helm/examples/grafana/values.yaml @@ -80,3 +80,18 @@ kube-prometheus-stack: enabled: true grafana: adminPassword: grafana1 + # Make Grafana persistent (Using Statefulset) + persistence: + enabled: true + type: sts + # storageClassName: "storageClassName" + accessModes: + - ReadWriteOnce + size: 5Gi + finalizers: + - kubernetes.io/pvc-protection + sidecar: + dashboards: + enabled: true + provider: + allowUiUpdates: true From b0b08c5f58509e8590f49fa363518da4581d4b9a Mon Sep 17 00:00:00 2001 From: heesung <103456639+heesung-sohn@users.noreply.github.com> Date: Thu, 18 Dec 2025 15:25:08 -0800 Subject: [PATCH 49/69] fixed tlsKeyFilePath (#224) --- .../migrationtool/PulsarClusterResourceGeneratorTest.java | 8 ++++---- .../base-release/configmap-pulsar-cluster-broker.yaml | 2 +- .../base-release/configmap-pulsar-cluster-function.yaml | 2 +- .../base-release/configmap-pulsar-cluster-proxy-ws.yaml | 2 +- .../base-release/configmap-pulsar-cluster-proxy.yaml | 2 +- .../autorecovery/AutorecoveryResourcesFactory.java | 2 +- .../bookkeeper/BookKeeperResourcesFactory.java | 2 +- .../kaap/controllers/broker/BrokerResourcesFactory.java | 4 ++-- .../function/FunctionsWorkerResourcesFactory.java | 2 +- .../oss/kaap/controllers/proxy/ProxyResourcesFactory.java | 4 ++-- .../autorecovery/AutorecoveryControllerTest.java | 2 +- .../controllers/bookkeeper/BookKeeperControllerTest.java | 2 +- .../oss/kaap/controllers/broker/BrokerControllerTest.java | 8 ++++---- .../function/FunctionsWorkerControllerTest.java | 4 ++-- .../oss/kaap/controllers/proxy/ProxyControllerTest.java | 6 +++--- 15 files changed, 26 insertions(+), 26 deletions(-) diff --git a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java index 36d3b321..89bdc5d8 100644 --- a/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java +++ b/migration-tool/src/test/java/com/datastax/oss/kaap/migrationtool/PulsarClusterResourceGeneratorTest.java @@ -553,7 +553,7 @@ private void assertValue(File tmpDir) { superUserRoles: "superuser-backup,create-tenant,admin" tlsCertificateFilePath: /pulsar/certs/tls.crt tlsEnabled: "true" - tlsKeyFilePath: /pulsar/tls-pk8.key + tlsKeyFilePath: /pulsar/certs/tls.key tlsProtocols: "TLSv1.3,TLSv1.2" tlsTrustCertsFilePath: /etc/ssl/certs/ca-certificates.crt tokenPublicKey: file:///pulsar/token-public-key/pulsar-public.key @@ -783,7 +783,7 @@ private void assertValue(File tmpDir) { tlsCertificateFilePath: /pulsar/certs/tls.crt tlsEnabledInProxy: "true" tlsEnabledWithBroker: "false" - tlsKeyFilePath: /pulsar/tls-pk8.key + tlsKeyFilePath: /pulsar/certs/tls.key tlsProtocols: "TLSv1.3,TLSv1.2" tlsTrustCertsFilePath: /etc/ssl/certs/ca-certificates.crt tokenPublicKey: file:///pulsar/token-public-key/pulsar-public.key @@ -871,7 +871,7 @@ private void assertValue(File tmpDir) { superUserRoles: "superuser-backup,create-tenant,admin" tlsCertificateFilePath: /pulsar/certs/tls.crt tlsEnabled: "true" - tlsKeyFilePath: /pulsar/tls-pk8.key + tlsKeyFilePath: /pulsar/certs/tls.key tlsTrustCertsFilePath: /etc/ssl/certs/ca-certificates.crt tokenPublicKey: file:///pulsar/token-public-key/pulsar-public.key webServicePort: 8000 @@ -1107,7 +1107,7 @@ private void assertValue(File tmpDir) { - create-tenant - admin tlsCertificateFilePath: /pulsar/certs/tls.crt - tlsKeyFilePath: /pulsar/tls-pk8.key + tlsKeyFilePath: /pulsar/certs/tls.key tlsTrustCertsFilePath: /etc/ssl/certs/ca-certificates.crt tokenPublicKey: file:///pulsar/token-public-key/pulsar-public.key topicCompactionFrequencySec: 1800 diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-broker.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-broker.yaml index 57a7a273..b8630aa4 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-broker.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-broker.yaml @@ -81,7 +81,7 @@ data: superUserRoles: superuser-backup,create-tenant,admin tlsCertificateFilePath: /pulsar/certs/tls.crt tlsEnabled: "true" - tlsKeyFilePath: /pulsar/tls-pk8.key + tlsKeyFilePath: /pulsar/certs/tls.key tlsProtocols: TLSv1.3,TLSv1.2 tlsTrustCertsFilePath: /etc/ssl/certs/ca-certificates.crt tokenPublicKey: file:///pulsar/token-public-key/pulsar-public.key diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-function.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-function.yaml index 6eaa71ad..8d04d42a 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-function.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-function.yaml @@ -21,7 +21,7 @@ data: \"false\"\npulsarFunctionsCluster: \"pulsar-cluster\"\nworkerId: \"pulsar-cluster-function\"\nworkerHostname: \"pulsar-cluster-function\"\nworkerPort: \"6750\"\nworkerPortTls: \"6751\"\ntlsCertificateFilePath: \"/pulsar/certs/tls.crt\"\ntlsTrustCertsFilePath: \"/etc/ssl/certs/ca-certificates.crt\"\nbrokerClientTrustCertsFilePath: - \"/etc/ssl/certs/ca-certificates.crt\"\ntlsKeyFilePath: \"/pulsar/tls-pk8.key\"\npulsarServiceUrl: + \"/etc/ssl/certs/ca-certificates.crt\"\ntlsKeyFilePath: \"/pulsar/certs/tls.key\"\npulsarServiceUrl: \"pulsar://pulsar-cluster-broker:6650\"\npulsarWebServiceUrl: \"http://pulsar-cluster-broker:8080\"\nnumFunctionPackageReplicas: \"2\"\ndownloadDirectory: \"/tmp/pulsar_functions\"\npulsarFunctionsNamespace: \"public/functions\"\nfunctionMetadataTopicName: \"metadata\"\ninstallUserCodeDependencies: diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-proxy-ws.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-proxy-ws.yaml index 66f3ebf5..669fd0f1 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-proxy-ws.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-proxy-ws.yaml @@ -39,7 +39,7 @@ data: superUserRoles: superuser-backup,create-tenant,admin tlsCertificateFilePath: /pulsar/certs/tls.crt tlsEnabled: "true" - tlsKeyFilePath: /pulsar/tls-pk8.key + tlsKeyFilePath: /pulsar/certs/tls.key tlsTrustCertsFilePath: /etc/ssl/certs/ca-certificates.crt tokenPublicKey: file:///pulsar/token-public-key/pulsar-public.key webServicePort: "8000" diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-proxy.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-proxy.yaml index 5a84a2cd..a92ca03c 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-proxy.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/configmap-pulsar-cluster-proxy.yaml @@ -42,7 +42,7 @@ data: tlsCertificateFilePath: /pulsar/certs/tls.crt tlsEnabledInProxy: "true" tlsEnabledWithBroker: "false" - tlsKeyFilePath: /pulsar/tls-pk8.key + tlsKeyFilePath: /pulsar/certs/tls.key tlsProtocols: TLSv1.3,TLSv1.2 tlsTrustCertsFilePath: /etc/ssl/certs/ca-certificates.crt tokenPublicKey: file:///pulsar/token-public-key/pulsar-public.key diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java index 0ce01c59..ae884785 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java @@ -98,7 +98,7 @@ public void patchConfigMap() { data.put("tlsProviderFactoryClass", "org.apache.bookkeeper.tls.TLSContextFactory"); data.put("tlsCertificatePath", "/pulsar/certs/tls.crt"); data.put("tlsKeyStoreType", "PEM"); - data.put("tlsKeyStore", "/pulsar/tls-pk8.key"); + data.put("tlsKeyStore", "/pulsar/certs/tls.key"); data.put("tlsTrustStoreType", "PEM"); data.put("tlsClientAuthentication", "true"); data.put("tlsTrustStore", getFullCaPath()); diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java index 6ab13acd..d596179a 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java @@ -181,7 +181,7 @@ public void patchConfigMap() { data.put("tlsProviderFactoryClass", "org.apache.bookkeeper.tls.TLSContextFactory"); data.put("tlsCertificatePath", "/pulsar/certs/tls.crt"); data.put("tlsKeyStoreType", "PEM"); - data.put("tlsKeyStore", "/pulsar/tls-pk8.key"); + data.put("tlsKeyStore", "/pulsar/certs/tls.key"); data.put("tlsTrustStoreType", "PEM"); data.put("tlsHostnameVerificationEnabled", "true"); data.put("bookkeeperTLSClientAuthentication", "true"); diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java index 72eefc75..819f9da5 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java @@ -204,7 +204,7 @@ public void patchConfigMap() { if (tlsEnabledOnBrokerSet) { data.put("tlsEnabled", "true"); data.put("tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - data.put("tlsKeyFilePath", " /pulsar/tls-pk8.key"); + data.put("tlsKeyFilePath", " /pulsar/certs/tls.key"); final String fullCaPath = getFullCaPath(); data.put("tlsTrustCertsFilePath", fullCaPath); data.put("brokerServicePortTls", DEFAULT_PULSARSSL_PORT + ""); @@ -216,7 +216,7 @@ public void patchConfigMap() { if (isTlsEnabledOnBookKeeper()) { data.put("bookkeeperTLSClientAuthentication", "true"); data.put("bookkeeperTLSKeyFileType", "PEM"); - data.put("bookkeeperTLSKeyFilePath", "/pulsar/tls-pk8.key"); + data.put("bookkeeperTLSKeyFilePath", "/pulsar/certs/tls.key"); data.put("bookkeeperTLSCertificateFilePath", "/pulsar/certs/tls.crt"); data.put("bookkeeperTLSTrustCertsFilePath", getFullCaPath()); data.put("bookkeeperTLSTrustCertTypes", "PEM"); diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java index c451ca38..0d1db804 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java @@ -255,7 +255,7 @@ public void patchConfigMap() { final String fullCaPath = getFullCaPath(); data.put("tlsTrustCertsFilePath", fullCaPath); data.put("brokerClientTrustCertsFilePath", fullCaPath); - data.put("tlsKeyFilePath", "/pulsar/tls-pk8.key"); + data.put("tlsKeyFilePath", "/pulsar/certs/tls.key"); } final boolean enabledWithBroker = isTlsEnabledFromFunctionsWorkerToBroker(); if (enabledWithBroker) { diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java index ede991c6..d9345a47 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java @@ -254,7 +254,7 @@ public void patchConfigMap() { data.put("brokerClientTlsTrustStore", "/pulsar/tls.truststore.jks"); data.put("tlsEnabledInProxy", "true"); data.put("tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - data.put("tlsKeyFilePath", "/pulsar/tls-pk8.key"); + data.put("tlsKeyFilePath", "/pulsar/certs/tls.key"); final String fullCaPath = getFullCaPath(); data.put("tlsTrustCertsFilePath", fullCaPath); data.put("brokerClientTrustCertsFilePath", fullCaPath); @@ -339,7 +339,7 @@ public void patchConfigMapWsConfig() { data.put("webServicePortTls", DEFAULT_WSS_PORT + ""); data.put("tlsEnabled", "true"); data.put("tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - data.put("tlsKeyFilePath", "/pulsar/tls-pk8.key"); + data.put("tlsKeyFilePath", "/pulsar/certs/tls.key"); data.put("tlsKeyStore", "/pulsar/tls.keystore.jks"); data.put("tlsTrustStore", "/pulsar/tls.truststore.jks"); if (getTlsConfigForProxySet(proxySet).getEnabledWithBroker()) { diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryControllerTest.java index b264b279..a9e0b576 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryControllerTest.java @@ -230,7 +230,7 @@ public void testTlsEnabledOnBookKeeper() throws Exception { expectedData.put("PULSAR_PREFIX_tlsProviderFactoryClass", "org.apache.bookkeeper.tls.TLSContextFactory"); expectedData.put("PULSAR_PREFIX_tlsCertificatePath", "/pulsar/certs/tls.crt"); expectedData.put("PULSAR_PREFIX_tlsKeyStoreType", "PEM"); - expectedData.put("PULSAR_PREFIX_tlsKeyStore", "/pulsar/tls-pk8.key"); + expectedData.put("PULSAR_PREFIX_tlsKeyStore", "/pulsar/certs/tls.key"); expectedData.put("PULSAR_PREFIX_tlsTrustStoreType", "PEM"); expectedData.put("PULSAR_PREFIX_tlsClientAuthentication", "true"); expectedData.put("PULSAR_PREFIX_tlsTrustStore", "/etc/ssl/certs/ca-certificates.crt"); diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperControllerTest.java index da74c5d4..73b5ae2c 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperControllerTest.java @@ -399,7 +399,7 @@ public void testTlsEnabledOnBookKeeper() throws Exception { expectedData.put("PULSAR_PREFIX_tlsProviderFactoryClass", "org.apache.bookkeeper.tls.TLSContextFactory"); expectedData.put("PULSAR_PREFIX_tlsCertificatePath", "/pulsar/certs/tls.crt"); expectedData.put("PULSAR_PREFIX_tlsKeyStoreType", "PEM"); - expectedData.put("PULSAR_PREFIX_tlsKeyStore", "/pulsar/tls-pk8.key"); + expectedData.put("PULSAR_PREFIX_tlsKeyStore", "/pulsar/certs/tls.key"); expectedData.put("PULSAR_PREFIX_tlsTrustStoreType", "PEM"); expectedData.put("PULSAR_PREFIX_tlsHostnameVerificationEnabled", "true"); expectedData.put("PULSAR_PREFIX_bookkeeperTLSClientAuthentication", "true"); diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/broker/BrokerControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/broker/BrokerControllerTest.java index 91b0efd5..9027d304 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/broker/BrokerControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/broker/BrokerControllerTest.java @@ -563,7 +563,7 @@ public void testTlsEnabledOnBroker() throws Exception { expectedData.put("PULSAR_PREFIX_backlogQuotaDefaultRetentionPolicy", "producer_exception"); expectedData.put("PULSAR_PREFIX_tlsEnabled", "true"); expectedData.put("PULSAR_PREFIX_tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", " /pulsar/tls-pk8.key"); + expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", " /pulsar/certs/tls.key"); expectedData.put("PULSAR_PREFIX_tlsTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("PULSAR_PREFIX_brokerServicePortTls", "6651"); expectedData.put("PULSAR_PREFIX_brokerClientTlsEnabled", "true"); @@ -753,7 +753,7 @@ public void testTlsEnabledOnBookKeeper() throws Exception { expectedData.put("PULSAR_PREFIX_backlogQuotaDefaultRetentionPolicy", "producer_exception"); expectedData.put("PULSAR_PREFIX_tlsEnabled", "true"); expectedData.put("PULSAR_PREFIX_tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", " /pulsar/tls-pk8.key"); + expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", " /pulsar/certs/tls.key"); expectedData.put("PULSAR_PREFIX_tlsTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("PULSAR_PREFIX_brokerServicePortTls", "6651"); expectedData.put("PULSAR_PREFIX_brokerClientTlsEnabled", "true"); @@ -762,7 +762,7 @@ public void testTlsEnabledOnBookKeeper() throws Exception { expectedData.put("PULSAR_PREFIX_brokerClient_tlsHostnameVerificationEnable", "true"); expectedData.put("PULSAR_PREFIX_bookkeeperTLSClientAuthentication", "true"); expectedData.put("PULSAR_PREFIX_bookkeeperTLSKeyFileType", "PEM"); - expectedData.put("PULSAR_PREFIX_bookkeeperTLSKeyFilePath", "/pulsar/tls-pk8.key"); + expectedData.put("PULSAR_PREFIX_bookkeeperTLSKeyFilePath", "/pulsar/certs/tls.key"); expectedData.put("PULSAR_PREFIX_bookkeeperTLSCertificateFilePath", "/pulsar/certs/tls.crt"); expectedData.put("PULSAR_PREFIX_bookkeeperTLSTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("PULSAR_PREFIX_bookkeeperTLSTrustCertTypes", "PEM"); @@ -1948,7 +1948,7 @@ public void testKafkaTls() throws Exception { expectedData.put("PULSAR_PREFIX_backlogQuotaDefaultRetentionPolicy", "producer_exception"); expectedData.put("PULSAR_PREFIX_tlsEnabled", "true"); expectedData.put("PULSAR_PREFIX_tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", " /pulsar/tls-pk8.key"); + expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", "/pulsar/certs/.key"); expectedData.put("PULSAR_PREFIX_tlsTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("PULSAR_PREFIX_brokerServicePortTls", "6651"); expectedData.put("PULSAR_PREFIX_brokerClientTlsEnabled", "true"); diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerControllerTest.java index a6e78ac7..0668cdab 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerControllerTest.java @@ -568,7 +568,7 @@ public void testTlsEnabledOnFunctionsWorker() throws Exception { expectedData.put("tlsCertificateFilePath", "/pulsar/certs/tls.crt"); expectedData.put("tlsTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("brokerClientTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); - expectedData.put("tlsKeyFilePath", "/pulsar/tls-pk8.key"); + expectedData.put("tlsKeyFilePath", "/pulsar/certs/tls.key"); expectedData.put("useTls", "true"); expectedData.put("tlsEnabledWithKeyStore", "true"); expectedData.put("tlsKeyStore", "/pulsar/tls.keystore.jks"); @@ -637,7 +637,7 @@ public void testTlsEnabledOnBookKeeper() throws Exception { expectedData.put("tlsCertificateFilePath", "/pulsar/certs/tls.crt"); expectedData.put("tlsTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("brokerClientTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); - expectedData.put("tlsKeyFilePath", "/pulsar/tls-pk8.key"); + expectedData.put("tlsKeyFilePath", "/pulsar/certs/tls.key"); expectedData.put("useTls", "true"); expectedData.put("tlsEnabledWithKeyStore", "true"); expectedData.put("tlsKeyStore", "/pulsar/tls.keystore.jks"); diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java index f07d06ef..daa8b5fc 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/proxy/ProxyControllerTest.java @@ -546,7 +546,7 @@ public void testTlsEnabledOnProxy() throws Exception { expectedData.put("PULSAR_PREFIX_brokerClientTlsTrustStore", "/pulsar/tls.truststore.jks"); expectedData.put("PULSAR_PREFIX_tlsEnabledInProxy", "true"); expectedData.put("PULSAR_PREFIX_tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", "/pulsar/tls-pk8.key"); + expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", "/pulsar/certs/tls.key"); expectedData.put("PULSAR_PREFIX_tlsTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("PULSAR_PREFIX_brokerClientTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("PULSAR_PREFIX_brokerServicePortTls", "6651"); @@ -582,7 +582,7 @@ public void testTlsEnabledOnProxy() throws Exception { wsExpectedData.put("PULSAR_PREFIX_webServicePortTls", "8001"); wsExpectedData.put("PULSAR_PREFIX_tlsEnabled", "true"); wsExpectedData.put("PULSAR_PREFIX_tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - wsExpectedData.put("PULSAR_PREFIX_tlsKeyFilePath", "/pulsar/tls-pk8.key"); + wsExpectedData.put("PULSAR_PREFIX_tlsKeyFilePath", "/pulsar/certs/tls.key"); wsExpectedData.put("PULSAR_PREFIX_tlsKeyStore", "/pulsar/tls.keystore.jks"); wsExpectedData.put("PULSAR_PREFIX_tlsTrustStore", "/pulsar/tls.truststore.jks"); wsExpectedData.put("PULSAR_PREFIX_brokerClientTlsEnabled", "true"); @@ -1808,7 +1808,7 @@ public void testKafkaTls() throws Exception { expectedData.put("PULSAR_PREFIX_brokerClientTlsTrustStore", "/pulsar/tls.truststore.jks"); expectedData.put("PULSAR_PREFIX_tlsEnabledInProxy", "true"); expectedData.put("PULSAR_PREFIX_tlsCertificateFilePath", "/pulsar/certs/tls.crt"); - expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", "/pulsar/tls-pk8.key"); + expectedData.put("PULSAR_PREFIX_tlsKeyFilePath", "/pulsar/certs/tls.key"); expectedData.put("PULSAR_PREFIX_tlsTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("PULSAR_PREFIX_brokerClientTrustCertsFilePath", "/etc/ssl/certs/ca-certificates.crt"); expectedData.put("PULSAR_PREFIX_brokerServicePortTls", "6651"); From 3cf5c850bef4754b95dd1fee157436dfd693c769 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Fri, 19 Dec 2025 10:30:53 -0600 Subject: [PATCH 50/69] simplify deployment readiness check (#229) Use the API calls to check for Deployment readiness instead of checking via matching replicasets. --- .../controllers/BaseResourcesFactory.java | 34 ++----------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java index 475d868a..d9c1040e 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java @@ -51,8 +51,6 @@ import io.fabric8.kubernetes.api.model.VolumeMount; import io.fabric8.kubernetes.api.model.VolumeMountBuilder; import io.fabric8.kubernetes.api.model.apps.Deployment; -import io.fabric8.kubernetes.api.model.apps.ReplicaSet; -import io.fabric8.kubernetes.api.model.apps.ReplicaSetStatus; import io.fabric8.kubernetes.api.model.apps.StatefulSet; import io.fabric8.kubernetes.api.model.apps.StatefulSetStatus; import io.fabric8.kubernetes.api.model.batch.v1.Job; @@ -803,38 +801,10 @@ public static boolean isStatefulSetReady(StatefulSet sts) { } public static boolean isDeploymentReady(Deployment deployment, KubernetesClient client) { - if (deployment == null) { + if ((deployment == null) || (deployment.getStatus() == null)) { return false; } - final String revision = deployment.getMetadata().getAnnotations().get(DEPLOYMENT_REVISION_ANNOTATION); - if (revision == null) { - return false; - } - - final List replicaSets = client.apps().replicaSets() - .inNamespace(deployment.getMetadata().getNamespace()) - .list() - .getItems() - .stream() - .filter(r -> r.getMetadata().getOwnerReferences().get(0).getUid() - .equals(deployment.getMetadata().getUid())) - .filter(r -> revision.equals(r.getMetadata().getAnnotations().get(DEPLOYMENT_REVISION_ANNOTATION))) - .collect(Collectors.toList()); - if (replicaSets.size() != 1) { - log.warnf("Found %d replica sets for deployment %s with revision %s", replicaSets.size(), - deployment.getMetadata().getName(), revision); - return false; - } - final ReplicaSet currentReplicaSet = replicaSets.get(0); - final ReplicaSetStatus status = currentReplicaSet.getStatus(); - if (status.getReplicas() == null || status.getReadyReplicas() == null - || status.getAvailableReplicas() == null) { - return false; - } - final int replicas = status.getReplicas().intValue(); - final int ready = status.getReadyReplicas().intValue(); - final int available = status.getAvailableReplicas().intValue(); - return replicas == ready && available == ready; + return (deployment.getStatus().getAvailableReplicas().equals(deployment.getStatus().getReplicas())); } public static boolean isPodReady(Pod pod) { From 96bf8ae7bc50d2fa65d23870dd0fa7533d863e8c Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Mon, 22 Dec 2025 11:10:30 -0600 Subject: [PATCH 51/69] upgrade jdk 17 -> 21 (#230) * upgrade JDK to 21 - upgrade JDK from 17 to 21 - fix compile errors with java 25 - fix some compiler warnings Since JDK 23, the maven compiler plugin needs to have lombok annotations explicitly enabled. https://inside.java/2024/06/18/quality-heads-up/ * upgrade spotbugs and fix issues --- .github/workflows/ci-release-operator.yaml | 6 +++--- .github/workflows/ci-test.yaml | 12 ++++++------ docs/development.md | 4 ++-- docs/migration.md | 4 ++-- .../oss/kaap/mocks/MockKubernetesClient.java | 6 +++--- operator/Dockerfile | 2 +- .../kaap/controllers/BaseResourcesFactory.java | 6 +++--- pom.xml | 15 +++++++++++---- 8 files changed, 31 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci-release-operator.yaml b/.github/workflows/ci-release-operator.yaml index e35ab6b6..609811c3 100644 --- a/.github/workflows/ci-release-operator.yaml +++ b/.github/workflows/ci-release-operator.yaml @@ -19,11 +19,11 @@ jobs: - name: Check out the repo uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3 + - name: Set up JDK + uses: actions/setup-java@v4 with: distribution: 'temurin' - java-version: 17 + java-version: 21 - name: Log in to Docker Hub uses: docker/login-action@v2 diff --git a/.github/workflows/ci-test.yaml b/.github/workflows/ci-test.yaml index b5a69dcf..d9dc1a9c 100644 --- a/.github/workflows/ci-test.yaml +++ b/.github/workflows/ci-test.yaml @@ -14,11 +14,11 @@ jobs: - name: checkout uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3 + - name: Set up JDK + uses: actions/setup-java@v4 with: distribution: 'temurin' - java-version: 17 + java-version: 21 - name: Check license headers run: mvn license:check @@ -109,11 +109,11 @@ jobs: helm dependency build helm/kaap-stack if: ${{ matrix.setup_helm == 'true' }} - - name: Set up JDK 17 - uses: actions/setup-java@v3 + - name: Set up JDK + uses: actions/setup-java@v4 with: distribution: 'temurin' - java-version: 17 + java-version: 21 - name: Setup ssh access to build runner VM if: ${{ github.event_name == 'pull_request' }} diff --git a/docs/development.md b/docs/development.md index b4a4705d..3708996b 100644 --- a/docs/development.md +++ b/docs/development.md @@ -2,7 +2,7 @@ The operator is built upon the [quarkus-operator-sdk](https://quarkiverse.github.io/quarkiverse-docs/quarkus-operator-sdk/dev/index.html) library. ## Requirements -- JDK17+ +- JDK21+ - Maven - Docker @@ -99,4 +99,4 @@ mvn -pl tests test -Dtest='CRDsTest' -Prun-tests-current-context \ ## Links and resources * [Quarkus Kubernetes](https://quarkus.io/guides/deploying-to-kubernetes) * [Quarkus JIB](https://quarkus.io/guides/container-image#container-image-options) -* [Kubernetes Java Operator SDK](https://javaoperatorsdk.io/) \ No newline at end of file +* [Kubernetes Java Operator SDK](https://javaoperatorsdk.io/) diff --git a/docs/migration.md b/docs/migration.md index 532bd741..7d98912a 100644 --- a/docs/migration.md +++ b/docs/migration.md @@ -12,7 +12,7 @@ Once the report is generated, is up to you to decide if you want to proceed with ### Usage -Java 17+ it's required. +Java 21+ is required. Download the jar from the [latest release](https://github.com/datastax/kaap/releases). Create the input file `input-cluster-specs.yaml` with the following content: @@ -78,4 +78,4 @@ kaap: - app.kubernetes.io/managed-by - chart - release - - heritage \ No newline at end of file + - heritage diff --git a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java index a08c62e3..79e789dc 100644 --- a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java +++ b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java @@ -199,7 +199,7 @@ private void mockAndInterceptResourceCreation(String namespace) { addCreatedResource(ic); return null; }); - when(interaction.createOrReplace()).thenAnswer(ic1 -> { + when(interaction.serverSideApply()).thenAnswer(ic1 -> { addCreatedResource(ic); return null; }); @@ -211,7 +211,7 @@ private void mockAndInterceptResourceCreation(String namespace) { }); - when(client.resources(any(HasMetadata.class.getClass()))).thenAnswer(ic -> { + when(client.resources(any(Class.class))).thenAnswer(ic -> { final MixedOperation interaction = Mockito.mock(MixedOperation.class); final Resource resourceMock = Mockito.mock(Resource.class); @@ -222,7 +222,7 @@ private void mockAndInterceptResourceCreation(String namespace) { return null; }); - when(mockedResource.createOrReplace()).thenAnswer(ic3 -> { + when(mockedResource.serverSideApply()).thenAnswer(ic3 -> { addCreatedResource(ic2); return null; }); diff --git a/operator/Dockerfile b/operator/Dockerfile index 3b9f1de2..7a82864c 100644 --- a/operator/Dockerfile +++ b/operator/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi8/openjdk-17:1.23 +FROM registry.access.redhat.com/ubi8/openjdk-21:1.23 ENV LANGUAGE='en_US:en' diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java index d9c1040e..96cd0d12 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/BaseResourcesFactory.java @@ -794,9 +794,9 @@ public static boolean isStatefulSetReady(StatefulSet sts) { return false; } - final int replicas = status.getReplicas().intValue(); - final int ready = status.getReadyReplicas().intValue(); - final int updated = status.getUpdatedReplicas().intValue(); + final int replicas = status.getReplicas(); + final int ready = status.getReadyReplicas(); + final int updated = status.getUpdatedReplicas(); return replicas == ready && updated == ready; } diff --git a/pom.xml b/pom.xml index 30b624ab..a2949cd3 100644 --- a/pom.xml +++ b/pom.xml @@ -37,8 +37,8 @@ true - 17 - 17 + 21 + 21 UTF-8 UTF-8 7.2.1 @@ -48,8 +48,8 @@ 7.7.0 4.10.0 1.18.42 - 4.7.2.1 - 4.7.2 + 4.7.3.6 + 4.7.3 3.5.0 1.15 3.19.0 @@ -257,6 +257,13 @@ -Xlint:-processing -Xpkginfo:always + + + org.projectlombok + lombok + ${lombok.version} + + From 885dd251ae4282902591e4e09ddbcc17ba5c4049 Mon Sep 17 00:00:00 2001 From: heesung <103456639+heesung-sohn@users.noreply.github.com> Date: Mon, 22 Dec 2025 12:40:08 -0800 Subject: [PATCH 52/69] update secret defaultMode to 416 (#232) --- .../oss/kaap/migrationtool/diff/DiffChecker.java | 2 +- .../deployment-pulsar-cluster-bastion.yaml | 10 +++++----- .../deployment-pulsar-cluster-proxy.yaml | 12 ++++++------ .../statefulset-pulsar-cluster-bookkeeper.yaml | 2 +- .../statefulset-pulsar-cluster-broker.yaml | 6 +++--- .../statefulset-pulsar-cluster-function.yaml | 8 ++++---- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/diff/DiffChecker.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/diff/DiffChecker.java index 1fe55422..0f0d4f31 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/diff/DiffChecker.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/diff/DiffChecker.java @@ -383,7 +383,7 @@ private static void adjustTemplateSpec(Map templateSpec) { removeIfMatch(templateSpec, "serviceAccount", templateSpec.get("serviceAccountName")); sortAndReplaceList(templateSpec, "volumes", v -> { final Map secret = getPropAsMap(v, "secret"); - removeIfMatch(secret, "defaultMode", 420); + removeIfMatch(secret, "defaultMode", 416); return v; }); sortAndReplaceList(templateSpec, "containers", container -> { diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/deployment-pulsar-cluster-bastion.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/deployment-pulsar-cluster-bastion.yaml index 70c02bac..a2642acb 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/deployment-pulsar-cluster-bastion.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/deployment-pulsar-cluster-bastion.yaml @@ -108,23 +108,23 @@ spec: volumes: - name: token-private-key secret: - defaultMode: 420 + defaultMode: 416 secretName: token-private-key - name: token-public-key secret: - defaultMode: 420 + defaultMode: 416 secretName: token-public-key - name: token-admin secret: - defaultMode: 420 + defaultMode: 416 secretName: token-admin - name: token-superuser secret: - defaultMode: 420 + defaultMode: 416 secretName: token-superuser - name: certs secret: - defaultMode: 420 + defaultMode: 416 secretName: pulsar-tls status: availableReplicas: 1 diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/deployment-pulsar-cluster-proxy.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/deployment-pulsar-cluster-proxy.yaml index e34132ff..1c478fca 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/deployment-pulsar-cluster-proxy.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/deployment-pulsar-cluster-proxy.yaml @@ -281,27 +281,27 @@ spec: volumes: - name: certs secret: - defaultMode: 420 + defaultMode: 416 secretName: pulsar-tls - name: token-public-key secret: - defaultMode: 420 + defaultMode: 416 secretName: token-public-key - name: token-private-key secret: - defaultMode: 420 + defaultMode: 416 secretName: token-private-key - name: token-proxy secret: - defaultMode: 420 + defaultMode: 416 secretName: token-proxy - name: token-websocket secret: - defaultMode: 420 + defaultMode: 416 secretName: token-websocket - name: token-superuser secret: - defaultMode: 420 + defaultMode: 416 secretName: token-superuser status: availableReplicas: 1 diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-bookkeeper.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-bookkeeper.yaml index 926835e6..8ec9f5b6 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-bookkeeper.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-bookkeeper.yaml @@ -169,7 +169,7 @@ spec: volumes: - name: certs secret: - defaultMode: 420 + defaultMode: 416 secretName: pulsar-tls updateStrategy: type: RollingUpdate diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-broker.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-broker.yaml index 0bec24a3..0473524f 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-broker.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-broker.yaml @@ -184,15 +184,15 @@ spec: name: health - name: certs secret: - defaultMode: 420 + defaultMode: 416 secretName: pulsar-tls - name: token-public-key secret: - defaultMode: 420 + defaultMode: 416 secretName: token-public-key - name: token-superuser secret: - defaultMode: 420 + defaultMode: 416 secretName: token-superuser updateStrategy: rollingUpdate: diff --git a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-function.yaml b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-function.yaml index c360db7b..95e63d6b 100644 --- a/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-function.yaml +++ b/migration-tool/src/test/resources/pulsar-helm-chart/base-release/statefulset-pulsar-cluster-function.yaml @@ -157,20 +157,20 @@ spec: terminationGracePeriodSeconds: 60 volumes: - configMap: - defaultMode: 420 + defaultMode: 416 name: pulsar-cluster-function name: config-volume - name: token-superuser secret: - defaultMode: 420 + defaultMode: 416 secretName: token-superuser - name: token-public-key secret: - defaultMode: 420 + defaultMode: 416 secretName: token-public-key - name: certs secret: - defaultMode: 420 + defaultMode: 416 secretName: pulsar-tls updateStrategy: type: RollingUpdate From 4af15932b33836cce823ac285c612e6895c82bda Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Tue, 23 Dec 2025 07:56:19 -0600 Subject: [PATCH 53/69] upgrade kube-prometheus-stack and grafana dashboards (#231) * upgrade kube-prometheus-stack Note: due to an issue in the grafana Helm chart, we can't upgrade to a more recent version (https://github.com/grafana/helm-charts/issues/3699) * update grafana dashboards update all Pulsar dashboards to use newer timeseries component (instead of deprecated graph) fix a few naming inconsistencies --- helm/kaap-stack/Chart.yaml | 2 +- .../grafana-dashboards/book-compact.json | 1168 ++-- .../bookkeeper-read-cache.json | 1228 ++-- .../bookkeeper-read-use.json | 610 +- .../grafana-dashboards/bookkeeper.json | 3578 ++++------- .../broker-cache-by-broker.json | 803 +-- .../grafana-dashboards/broker-cache.json | 1169 ++-- .../grafana-dashboards/debezium.json | 736 +-- .../grafana-dashboards/goruntime.json | 1193 ---- helm/kaap-stack/grafana-dashboards/jvm.json | 2212 ++----- .../grafana-dashboards/load-balance.json | 1658 ++--- .../grafana-dashboards/messaging.json | 2001 ++---- .../grafana-dashboards/namespace.json | 2052 +++--- helm/kaap-stack/grafana-dashboards/node.json | 2800 +++------ .../grafana-dashboards/offload.json | 583 +- .../overview-by-broker.json | 1110 ++-- .../grafana-dashboards/overview.json | 4325 ++++++------- helm/kaap-stack/grafana-dashboards/proxy.json | 1815 +++--- .../grafana-dashboards/pulsarheartbeat.json | 1313 ++-- helm/kaap-stack/grafana-dashboards/s4k.json | 2059 +++--- helm/kaap-stack/grafana-dashboards/s4r.json | 756 +-- .../grafana-dashboards/sockets.json | 867 +-- .../kaap-stack/grafana-dashboards/tenant.json | 1641 ++--- helm/kaap-stack/grafana-dashboards/topic.json | 2411 ++++---- .../grafana-dashboards/zookeeper.json | 5507 +++++++++++++---- 25 files changed, 19953 insertions(+), 23644 deletions(-) delete mode 100644 helm/kaap-stack/grafana-dashboards/goruntime.json diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index e2ca8a7f..602b0fe7 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -25,7 +25,7 @@ dependencies: version: 0.4.x repository: file://../kaap - name: kube-prometheus-stack - version: 62.3.0 + version: 70.10.0 repository: https://prometheus-community.github.io/helm-charts condition: kube-prometheus-stack.enabled - name: keycloak diff --git a/helm/kaap-stack/grafana-dashboards/book-compact.json b/helm/kaap-stack/grafana-dashboards/book-compact.json index e7d08c80..b4005ed6 100644 --- a/helm/kaap-stack/grafana-dashboards/book-compact.json +++ b/helm/kaap-stack/grafana-dashboards/book-compact.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,774 +16,791 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 36, + "id": 3, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(bookie_RECLAIMED_COMPACTION_SPACE_BYTES[5m]) ", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bookie Reclaim Compaction Space (Rate)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(bookie_RECLAIMED_DELETION_SPACE_BYTES[5m]) ", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bookie Reclaim Deletion Space (Rate)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 9 }, - "hiddenSeries": false, "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(bookie_MAJOR_COMPACTION_COUNT[5m])", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Major Compaction (Rate)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 9 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(bookie_MAJOR_COMPACTION_COUNT[5m])", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Major Compaction (Rate)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 18 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "bookie_ACTIVE_ENTRY_LOG_COUNT", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Active Entry Logs", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 18 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "bookie_ACTIVE_ENTRY_LOG_COUNT", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Active Entry Logs", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 27 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "bookie_ACTIVE_LEDGER_COUNT", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Active Ledger Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 27 }, - "hiddenSeries": false, "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "bookie_DELETED_LEDGER_COUNT", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Deleted Ledger Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "schemaVersion": 26, - "style": "dark", + "preload": false, + "refresh": "", + "schemaVersion": 41, "tags": [], "templating": { "list": [] @@ -793,5 +813,5 @@ "timezone": "", "title": "Pulsar / BookKeeper Compaction", "uid": "dOcbekX7k", - "version": 3 + "version": 1 } diff --git a/helm/kaap-stack/grafana-dashboards/bookkeeper-read-cache.json b/helm/kaap-stack/grafana-dashboards/bookkeeper-read-cache.json index 3718b7ed..22307974 100644 --- a/helm/kaap-stack/grafana-dashboards/bookkeeper-read-cache.json +++ b/helm/kaap-stack/grafana-dashboards/bookkeeper-read-cache.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,869 +16,828 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 35, + "id": 5, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "(sum(rate(bookie_readahead_batch_count_count[1m])) by (kubernetes_pod_name) + sum(rate(bookie_readahead_batch_count_sum[1m])) by (kubernetes_pod_name)) / sum(rate(bookie_read_entry_count[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Reads to disk per read op", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookkeeper_server_READ_ENTRY_REQUEST_count{success=\"false\"}[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Failed read request rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookkeeper_server_READ_ENTRY_REQUEST_count[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read request rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, - "hiddenSeries": false, "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookie_READ_BYTES[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bookie read throughput", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 }, - "hiddenSeries": false, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookkeeper_server_READ_ENTRY_count[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bookie read operation rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "irate(bookie_read_cache_size[1m])", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bookie read cache size 1 minute increase", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 24 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookie_read_cache_hits_count[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bookie read cache hits", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 24 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookie_read_cache_misses_count[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bookie read cache misses", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 33 }, - "hiddenSeries": false, "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "(sum(irate(bookie_read_cache_misses_count[1m])) by (kubernetes_pod_name) / sum(irate(bookie_read_cache_hits_count[1m])) by (kubernetes_pod_name)) * 100", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Cache miss to hit ratio", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "schemaVersion": 26, - "style": "dark", + "preload": false, + "refresh": "", + "schemaVersion": 41, "tags": [], "templating": { "list": [] @@ -889,4 +851,4 @@ "title": "Pulsar / Bookkeeper read cache", "uid": "XbpcyJK7k", "version": 1 -} \ No newline at end of file +} diff --git a/helm/kaap-stack/grafana-dashboards/bookkeeper-read-use.json b/helm/kaap-stack/grafana-dashboards/bookkeeper-read-use.json index 53a75ca2..70444702 100644 --- a/helm/kaap-stack/grafana-dashboards/bookkeeper-read-use.json +++ b/helm/kaap-stack/grafana-dashboards/bookkeeper-read-use.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,437 +16,474 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 34, + "id": 6, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookie_read_entry_sum[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "DbLedgerStorage Reads Time Spent", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "Time spent by the read thread pool executing requests", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookkeeper_server_BookieReadThreadPool_task_execution_sum[1m])) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read Thread Pool Time Spent", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_queue_0) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_queue_1) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_queue_2) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_queue_3) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "D" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_queue_4) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "E" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_queue_5) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "F" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_queue_6) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "G" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_queue_7) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "H" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read thread pool task queues length", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 9 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_BookieReadThreadPool_task_queued{success=\"true\",quantile=\"0.99\"}) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read thread pool queue p99 time", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "schemaVersion": 26, - "style": "dark", + "preload": false, + "refresh": "", + "schemaVersion": 41, "tags": [], "templating": { "list": [] diff --git a/helm/kaap-stack/grafana-dashboards/bookkeeper.json b/helm/kaap-stack/grafana-dashboards/bookkeeper.json index a169a838..6cf238bc 100644 --- a/helm/kaap-stack/grafana-dashboards/bookkeeper.json +++ b/helm/kaap-stack/grafana-dashboards/bookkeeper.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -14,14 +17,13 @@ }, "description": "Metrics of bookkeeper cluster", "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "iteration": 1593873242177, + "id": 4, "links": [], "panels": [ { "collapsed": false, - "datasource": null, "gridPos": { "h": 1, "w": 24, @@ -34,29 +36,39 @@ "type": "row" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { "h": 7, "w": 3, @@ -64,42 +76,31 @@ "y": 1 }, "id": 27, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "count(bookie_SERVER_STATUS{job=~\"$job\"} == 1)\n ", "format": "time_series", "intervalFactor": 1, @@ -107,43 +108,43 @@ "refId": "A" } ], - "thresholds": "", "title": "Writable Bookies", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "0" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { "h": 7, "w": 3, @@ -151,44 +152,31 @@ "y": 1 }, "id": 31, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "$$hashKey": "object:1794", - "name": "value to text", - "value": 1 - }, - { - "$$hashKey": "object:1795", - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "count(bookie_SERVER_STATUS{job=~\"$job\", kubernetes_pod_name=~\"$instance\"} == 0)\n", "format": "time_series", "interval": "", @@ -197,70 +185,99 @@ "refId": "A" } ], - "thresholds": "", "title": "ReadOnly Bookies", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "$$hashKey": "object:1797", - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "avg" + "type": "stat" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "success rate for different types of requests", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 9, "x": 6, "y": 1 }, - "hiddenSeries": false, "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 * sum(irate(bookkeeper_server_ADD_ENTRY_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\"}[60s])) / sum(irate(bookkeeper_server_ADD_ENTRY_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}[60s]))", "format": "time_series", "interval": "", @@ -270,6 +287,10 @@ "step": 2 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 * sum(irate(bookkeeper_server_READ_ENTRY_count{job=~\"$job\", instance=~\"$instance\", success=\"true\"}[60s])) / sum(irate(bookkeeper_server_READ_ENTRY_count{job=~\"$job\", instance=~\"$instance\"}[60s]))", "format": "time_series", "intervalFactor": 1, @@ -277,96 +298,98 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Success Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 9, "x": 15, "y": 1 }, - "hiddenSeries": false, "id": 13, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "avg(bookkeeper_server_ADD_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.99\"})", "format": "time_series", "interval": "", @@ -376,6 +399,10 @@ "step": 2 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "avg(bookkeeper_server_ADD_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.999\"})", "format": "time_series", "interval": "", @@ -384,6 +411,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "avg(bookkeeper_server_ADD_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.5\"})", "format": "time_series", "interval": "", @@ -392,6 +423,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "avg(bookkeeper_server_READ_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.99\"})", "format": "time_series", "interval": "", @@ -400,6 +435,10 @@ "refId": "D" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "avg(bookkeeper_server_READ_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.999\"})", "format": "time_series", "interval": "", @@ -408,6 +447,10 @@ "refId": "E" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "avg(bookkeeper_server_READ_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.5\"})", "format": "time_series", "interval": "", @@ -416,71 +459,49 @@ "refId": "F" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "#299c46", + "value": 90 + } + ] + }, + "unit": "percent" }, "overrides": [] }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 7, "w": 6, @@ -488,42 +509,31 @@ "y": 8 }, "id": 33, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 \n* \ncount(bookie_SERVER_STATUS{job=~\"$job\", kubernetes_pod_name=~\"$instance\"} == 1)\n/\ncount(bookie_SERVER_STATUS{job=~\"$job\", kubernetes_pod_name=~\"$instance\"})\n ", "format": "time_series", "interval": "", @@ -532,68 +542,98 @@ "refId": "A" } ], - "thresholds": "80,90", "title": "writable bookies (percentage)", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 9, "x": 6, "y": 8 }, - "hiddenSeries": false, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(bookie_WRITE_BYTES{job=~\"$job\"}[60s]))", "format": "time_series", "interval": "", @@ -603,6 +643,10 @@ "step": 2 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(bookie_READ_BYTES{job=~\"$job\"}[60s]))", "format": "time_series", "intervalFactor": 1, @@ -610,96 +654,98 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Throughput (MB / s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 9, "x": 15, "y": 8 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookkeeper_server_READ_ENTRY_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\"}[60s]))", "format": "time_series", "interval": "", @@ -709,6 +755,10 @@ "step": 2 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookkeeper_server_ADD_ENTRY_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\"}[60s]))", "format": "time_series", "interval": "", @@ -717,50 +767,11 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Entry Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { "collapsed": false, - "datasource": null, "gridPos": { "h": 1, "w": 24, @@ -773,54 +784,94 @@ "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 16 }, - "hiddenSeries": false, "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookie_WRITE_BYTES{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}[60s])) by (kubernetes_pod_name) ", "format": "time_series", "interval": "", @@ -830,96 +881,98 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Write Bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 16 }, - "hiddenSeries": false, "id": 51, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookie_READ_BYTES{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}[60s])) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -929,96 +982,98 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read Bytes (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 23 }, - "hiddenSeries": false, "id": 52, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookkeeper_server_ADD_ENTRY_REQUEST_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}[60s])) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1028,96 +1083,98 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Add Entry Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 23 }, - "hiddenSeries": false, "id": 53, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookkeeper_server_READ_ENTRY_REQUEST_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}[60s])) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1127,96 +1184,98 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read Entry Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 30 }, - "hiddenSeries": false, "id": 48, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_ADD_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.5\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1226,96 +1285,98 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Add entry latency (p50)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 8, "y": 30 }, - "hiddenSeries": false, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_ADD_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.99\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1325,96 +1386,98 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Add entry latency (99pct)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 16, "y": 30 }, - "hiddenSeries": false, "id": 49, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_ADD_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.999\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1424,96 +1487,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Add entry latency (p999)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 37 }, - "hiddenSeries": false, "id": 54, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_READ_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.5\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1523,96 +1526,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read entry latency (p50)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 8, "y": 37 }, - "hiddenSeries": false, "id": 55, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_READ_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.99\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1622,96 +1565,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read entry latency (p99)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 16, "y": 37 }, - "hiddenSeries": false, "id": 56, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookkeeper_server_READ_ENTRY_REQUEST{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.999\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1721,50 +1604,11 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read entry latency (p999)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { "collapsed": false, - "datasource": null, "gridPos": { "h": 1, "w": 24, @@ -1777,54 +1621,32 @@ "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 45 }, - "hiddenSeries": false, "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookie_journal_JOURNAL_SYNC_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\"}[60s])) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1834,96 +1656,36 @@ "step": 4 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Sync Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 45 }, - "hiddenSeries": false, "id": 40, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(irate(bookie_journal_JOURNAL_ADD_ENTRY_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\"}[60s])) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -1933,96 +1695,36 @@ "step": 4 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Add Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 52 }, - "hiddenSeries": false, "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_QUEUE_SIZE{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2032,96 +1734,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Queue length", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 8, "y": 52 }, - "hiddenSeries": false, "id": 36, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_FORCE_WRITE_QUEUE_SIZE{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2131,96 +1773,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Force Write Queue length", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 16, "y": 52 }, - "hiddenSeries": false, "id": 37, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_CB_QUEUE_SIZE{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2230,96 +1812,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Callback Queue length", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 59 }, - "hiddenSeries": false, "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_ADD_ENTRY{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.5\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2329,96 +1851,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Add latency (p50)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 8, "y": 59 }, - "hiddenSeries": false, "id": 38, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_ADD_ENTRY{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.99\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2428,96 +1890,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Add latency (p99)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 16, "y": 59 }, - "hiddenSeries": false, "id": 39, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_ADD_ENTRY{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"1.0\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2527,96 +1929,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Add latency (Max)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 66 }, - "hiddenSeries": false, "id": 15, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_SYNC{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.5\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2626,96 +1968,36 @@ "step": 4 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Sync Latency (p50)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 8, "y": 66 }, - "hiddenSeries": false, "id": 41, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_SYNC{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"0.99\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2725,96 +2007,36 @@ "step": 4 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Sync Latency (p99)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 16, "y": 66 }, - "hiddenSeries": false, "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_journal_JOURNAL_SYNC{job=~\"$job\", kubernetes_pod_name=~\"$instance\", success=\"true\", quantile=\"1.0\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2824,50 +2046,11 @@ "step": 4 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Journal Sync Latency (Max)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { "collapsed": false, - "datasource": null, "gridPos": { "h": 1, "w": 24, @@ -2880,54 +2063,32 @@ "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 74 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_ledgers_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -2937,96 +2098,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Ledgers count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 74 }, - "hiddenSeries": false, "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_entries_count{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -3036,96 +2137,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Entries count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 81 }, - "hiddenSeries": false, "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_write_cache_size{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -3135,96 +2176,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Write Cache Size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 81 }, - "hiddenSeries": false, "id": 19, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_read_cache_size{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -3234,95 +2215,36 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Read Cache Size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 88 }, - "hiddenSeries": false, "id": 45, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_DELETED_LEDGER_COUNT{job=~\"$job\", kubernetes_pod_name=~\"$$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -3331,95 +2253,36 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Deleted Ledger Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 88 }, - "hiddenSeries": false, "id": 46, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "dataLinks": [] }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(bookie_ledger_writable_dirs{job=~\"$job\", kubernetes_pod_name=~\"$instance\"}) by (kubernetes_pod_name)", "format": "time_series", "interval": "", @@ -3428,95 +2291,46 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Writable Ledger Directory Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 25, - "style": "dark", + "schemaVersion": 41, "tags": [ "pulsar" ], "templating": { "list": [ { - "allValue": null, "current": { - "selected": false, "text": "bookkeeper", "value": "bookkeeper" }, "datasource": "Prometheus", "definition": "bookkeeper_server_ADD_ENTRY{job=~\"$job\"}", - "hide": 0, "includeAll": true, "label": "job", - "multi": false, "name": "job", "options": [], "query": "bookkeeper_server_ADD_ENTRY{job=~\"$job\"}", "refresh": 2, "regex": "/.*[^_]job=\\\"(bookkeeper)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, "current": { - "selected": true, - "tags": [], - "text": "pulsar-bookkeeper-1", + "text": [ + "All" + ], "value": [ - "pulsar-bookkeeper-1" + "$__all" ] }, "datasource": "Prometheus", "definition": "bookkeeper_server_ADD_ENTRY{job=~\"$job\", kubernetes_pod_name=~\".+\"}", - "hide": 0, "includeAll": true, "label": "Bookie", "multi": true, @@ -3525,13 +2339,8 @@ "query": "bookkeeper_server_ADD_ENTRY{job=~\"$job\", kubernetes_pod_name=~\".+\"}", "refresh": 2, "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -3550,17 +2359,6 @@ "1h", "2h", "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" ] }, "timezone": "browser", diff --git a/helm/kaap-stack/grafana-dashboards/broker-cache-by-broker.json b/helm/kaap-stack/grafana-dashboards/broker-cache-by-broker.json index 8f8f8235..51f5c196 100644 --- a/helm/kaap-stack/grafana-dashboards/broker-cache-by-broker.json +++ b/helm/kaap-stack/grafana-dashboards/broker-cache-by-broker.json @@ -24,10 +24,8 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 48, - "iteration": 1662569745975, + "id": 8, "links": [], - "liveNow": false, "panels": [ { "datasource": { @@ -41,9 +39,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -52,6 +54,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -74,8 +77,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -98,14 +100,16 @@ "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "none" } }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -161,10 +165,6 @@ "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -172,44 +172,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 29, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -224,35 +262,8 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Cache Hit Percentage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { "datasource": { @@ -265,9 +276,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -276,6 +291,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -298,8 +314,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -322,14 +337,16 @@ "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "none" } }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -348,54 +365,88 @@ "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 7 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -410,41 +461,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Cache Hit Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -452,44 +472,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 15 }, - "hiddenSeries": false, "id": 27, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -504,41 +562,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Hits Throughput by Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -546,44 +573,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 15 }, - "hiddenSeries": false, "id": 28, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -598,41 +663,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Misses Throughput by Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -640,44 +674,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 23 }, - "hiddenSeries": false, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -692,85 +764,92 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Used Size By Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 23 }, - "hiddenSeries": false, "id": 25, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -785,55 +864,23 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Evictions by Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 36, - "style": "dark", + "schemaVersion": 41, "tags": [], "templating": { "list": [ { "current": { - "selected": true, "text": [ - "pulsar-aws-useast1-broker-0", - "pulsar-aws-useast1-broker-1", - "pulsar-aws-useast1-broker-2" + "All" ], "value": [ - "pulsar-aws-useast1-broker-0", - "pulsar-aws-useast1-broker-1", - "pulsar-aws-useast1-broker-2" + "$__all" ] }, "datasource": { @@ -841,7 +888,6 @@ "uid": "prometheus" }, "definition": "label_values(pulsar_ml_AddEntryBytesRate, kubernetes_pod_name)", - "hide": 0, "includeAll": true, "multi": true, "name": "broker", @@ -852,8 +898,6 @@ }, "refresh": 1, "regex": "", - "skipUrlSync": false, - "sort": 0, "type": "query" } ] @@ -866,6 +910,5 @@ "timezone": "", "title": "Pulsar / Broker Cache By Broker", "uid": "mtRgpcM4k", - "version": 2, - "weekStart": "" -} \ No newline at end of file + "version": 1 +} diff --git a/helm/kaap-stack/grafana-dashboards/broker-cache.json b/helm/kaap-stack/grafana-dashboards/broker-cache.json index aa21992e..51433125 100644 --- a/helm/kaap-stack/grafana-dashboards/broker-cache.json +++ b/helm/kaap-stack/grafana-dashboards/broker-cache.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,790 +16,826 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 1, + "id": 7, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 22, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_hits_rate)", "interval": "", "legendFormat": "Cache Hit", "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_misses_rate)", "interval": "", "legendFormat": "Miss Rate", "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_rate_in) by (topic))", "interval": "", "legendFormat": "Rate In", "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_rate_out) by (topic))", "interval": "", "legendFormat": "Rate Out", "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "In/Out Rate vs Cache Hit/Miss Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 29, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_hits_rate) / (sum(pulsar_ml_cache_hits_rate) + sum(pulsar_ml_cache_misses_rate)) * 100", "interval": "", "legendFormat": "Cache Hit %", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Cache Hit Percentage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 7 }, - "hiddenSeries": false, "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_misses_rate) by (kubernetes_pod_name)", "interval": "", "legendFormat": "{{ instance }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Cache Miss Rate by Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 7 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_hits_rate) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Cache Hit Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 15 }, - "hiddenSeries": false, "id": 27, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_hits_throughput) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Hits Throughput by Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 15 }, - "hiddenSeries": false, "id": 28, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_misses_throughput) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Misses Throughput by Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 23 }, - "hiddenSeries": false, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_used_size) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Used Size By Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 23 }, - "hiddenSeries": false, "id": 25, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_ml_cache_evictions) by (kubernetes_pod_name)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Evictions by Broker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 25, - "style": "dark", + "schemaVersion": 41, "tags": [], "templating": { "list": [] diff --git a/helm/kaap-stack/grafana-dashboards/debezium.json b/helm/kaap-stack/grafana-dashboards/debezium.json index 8567f6de..060ff039 100644 --- a/helm/kaap-stack/grafana-dashboards/debezium.json +++ b/helm/kaap-stack/grafana-dashboards/debezium.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,504 +16,527 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, + "id": 9, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum by (kubernetes_pod_name) (rate(debezium_postgres_connector_metrics_TotalNumberOfEventsSeen[5m]))", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Event Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum by (kubernetes_pod_name) (rate(debezium_postgres_connector_metrics_NumberOfCommittedTransactions[5m]))", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Commited Transaction Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum by (kubernetes_pod_name) (debezium_postgres_connector_metrics_Connected)", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Connected Status", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum by (kubernetes_pod_name) (debezium_postgres_connector_metrics_NumberOfCommittedTransactions)", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Committed Transactions", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 16 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum by (kubernetes_pod_name) (debezium_postgres_connector_metrics_TotalNumberOfEventsSeen)", "interval": "", "legendFormat": "{{ kubernetes_pod_name }}", "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "", "interval": "", "legendFormat": "", "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Events Seen", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "refresh": false, - "schemaVersion": 26, - "style": "dark", + "preload": false, + "refresh": "", + "schemaVersion": 41, "tags": [], "templating": { "list": [] diff --git a/helm/kaap-stack/grafana-dashboards/goruntime.json b/helm/kaap-stack/grafana-dashboards/goruntime.json deleted file mode 100644 index 5b6a7f76..00000000 --- a/helm/kaap-stack/grafana-dashboards/goruntime.json +++ /dev/null @@ -1,1193 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "A quickstart to setup the Prometheus Go runtime exporter with preconfigured dashboards, alerting rules, and recording rules.", - "editable": true, - "gnetId": 14061, - "graphTooltip": 0, - "id": 39, - "iteration": 1651855349835, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average total bytes of memory reserved across all process instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by(job)(go_memstats_sys_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}} (avg)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total Reserved Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average stack memory usage across all instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 24, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (job) (go_memstats_stack_sys_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: stack inuse (avg)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Stack Memory Use", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average memory reservations by the runtime, not for stack or heap, across all instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 8 - }, - "hiddenSeries": false, - "id": 26, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (job)(go_memstats_mspan_sys_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{instance}}: mspan (avg)", - "refId": "B" - }, - { - "expr": "avg by (job)(go_memstats_mcache_sys_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{instance}}: mcache (avg)", - "refId": "D" - }, - { - "expr": "avg by (job)(go_memstats_buck_hash_sys_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{instance}}: buck hash (avg)", - "refId": "E" - }, - { - "expr": "avg by (job)(go_memstats_gc_sys_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: gc (avg)", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Other Memory Reservations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average memory reserved, and actually in use, by the heap, across all instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 - }, - "hiddenSeries": false, - "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (job)(go_memstats_heap_sys_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: heap reserved (avg)", - "refId": "B" - }, - { - "exemplar": true, - "expr": "avg by (job)(go_memstats_heap_inuse_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: heap in use (avg)", - "refId": "A" - }, - { - "exemplar": true, - "expr": "avg by (job)(go_memstats_heap_alloc_bytes{job=~\"$job\",instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: heap alloc (avg)", - "refId": "C" - }, - { - "exemplar": true, - "expr": "avg by (job)(go_memstats_heap_idle_bytes{job=~\"$job\",instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: heap idle (avg)", - "refId": "D" - }, - { - "exemplar": true, - "expr": "avg by (job)(go_memstats_heap_released_bytes{job=~\"$job\",instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: heap released (avg)", - "refId": "E" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Heap Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average allocation rate in bytes per second, across all instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 16 - }, - "hiddenSeries": false, - "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 1, - "points": true, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (job)(rate(go_memstats_alloc_bytes_total{job=\"$job\", instance=~\"$instance\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "{{job}}: bytes malloced/s (avg)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Allocation Rate, Bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average rate of heap object allocation, across all instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 16 - }, - "hiddenSeries": false, - "id": 20, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(go_memstats_mallocs_total{job=\"$job\", instance=~\"$instance\"}[$__rate_interval])", - "interval": "", - "legendFormat": "{{job}}: obj mallocs/s (avg)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Heap Object Allocation Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average number of live memory objects across all instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 24 - }, - "hiddenSeries": false, - "id": 22, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by(job)(go_memstats_mallocs_total{job=\"$job\", instance=~\"$instance\"} - go_memstats_frees_total{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: object count (avg)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Number of Live Objects", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Average number of goroutines across instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 24 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (job)(go_goroutines{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: goroutine count (avg)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Goroutines", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 32 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "exemplar": true, - "expr": "avg by (job)(go_gc_duration_seconds{quantile=\"0\", job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: min gc time (avg)", - "refId": "A" - }, - { - "exemplar": true, - "expr": "avg by (job)(go_gc_duration_seconds{quantile=\"1\", job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}}: max gc time (avg)", - "refId": "B" - }, - { - "exemplar": true, - "expr": "avg by (job)(go_gc_duration_seconds{quantile=\"0.5\", job=\"$job\", instance=~\"$instance\"})", - "hide": false, - "interval": "", - "legendFormat": "{{job}}: 0.5 quantile gc time (avg)", - "refId": "C" - }, - { - "exemplar": true, - "expr": "avg by (job)(go_gc_duration_seconds{quantile=\"0.75\", job=\"$job\", instance=~\"$instance\"})", - "hide": false, - "interval": "", - "legendFormat": "{{job}}: 0.75 quantile gc time (avg)", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC min & max duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "The number used bytes at which the runtime plans to perform the next GC, averaged across all instances of a job.", - "fieldConfig": { - "defaults": { - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 32 - }, - "hiddenSeries": false, - "id": 27, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg by (job)(go_memstats_next_gc_bytes{job=\"$job\", instance=~\"$instance\"})", - "interval": "", - "legendFormat": "{{job}} next gc bytes (avg)", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Next GC, Bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "10s", - "schemaVersion": 27, - "style": "dark", - "tags": [ - "go", - "golang" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "Prometheus", - "value": "Prometheus" - }, - "description": null, - "error": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "allValue": null, - "current": { - "selected": false, - "text": "pulsar-monitor", - "value": "pulsar-monitor" - }, - "datasource": "$datasource", - "definition": "label_values(go_info, job)", - "description": null, - "error": null, - "hide": 0, - "includeAll": false, - "label": "job", - "multi": false, - "name": "job", - "options": [], - "query": { - "query": "label_values(go_info, job)", - "refId": "Prometheus-job-Variable-Query" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": "", - "current": { - "selected": false, - "text": "All", - "value": "$__all" - }, - "datasource": "$datasource", - "definition": "label_values(go_info{job=\"$job\"}, instance)", - "description": null, - "error": null, - "hide": 0, - "includeAll": true, - "label": "instance", - "multi": true, - "name": "instance", - "options": [], - "query": { - "query": "label_values(go_info{job=\"$job\"}, instance)", - "refId": "Prometheus-instance-Variable-Query" - }, - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Go Runtime Exporter", - "uid": "CgCw8jKZz3", - "version": 5 -} diff --git a/helm/kaap-stack/grafana-dashboards/jvm.json b/helm/kaap-stack/grafana-dashboards/jvm.json index 80b72513..3dd90731 100644 --- a/helm/kaap-stack/grafana-dashboards/jvm.json +++ b/helm/kaap-stack/grafana-dashboards/jvm.json @@ -3,1536 +3,129 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "JVM Related Metrics", - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 21, - "iteration": 1617970014384, - "links": [], - "panels": [ - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 41, - "panels": [], - "repeat": "instance", - "scopedVars": {}, - "title": "$job - $instance", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 0, - "y": 1 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "irate(process_cpu_seconds_total{kubernetes_pod_name=~\"$instance\"}[60s]) * 100\n\n", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "process_cpu_seconds_total", - "refId": "A", - "step": 20 - } - ], - "thresholds": [ - { - "colorMode": "ok", - "fill": false, - "line": true, - "op": "gt", - "value": 100, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 6, - "y": 1 - }, - "hiddenSeries": false, - "id": 1, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(jvm_memory_bytes_committed{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Heap size", - "metric": "jvm_memory_bytes_committed", - "refId": "A", - "step": 20 - }, - { - "expr": "sum(jvm_memory_bytes_used{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Used", - "metric": "jvm_memory_bytes_used", - "refId": "B", - "step": 20 - }, - { - "expr": "sum(jvm_memory_bytes_max{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Max", - "metric": "jvm_memory_bytes_max", - "refId": "C", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Heap Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 12, - "y": 1 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_direct_bytes_used{kubernetes_pod_name=~\"$instance\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Used", - "metric": "jvm_memory_direct_bytes_used", - "refId": "A", - "step": 20 - }, - { - "expr": "jvm_memory_direct_bytes_max{kubernetes_pod_name=~\"$instance\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Max", - "metric": "jvm_memory_direct_bytes_max", - "refId": "B", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 18, - "y": 1 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": {}, - "seriesOverrides": [ - { - "alias": "old count", - "yaxis": 2 - }, - { - "alias": "young count", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(jvm_gc_collection_seconds_sum{kubernetes_pod_name=~\"$instance\"}[60s]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Pause", - "metric": "jvm_gc_collection_seconds_count", - "refId": "B", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC Time", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 7 - }, - "id": 42, - "panels": [], - "repeat": null, - "repeatIteration": 1617970014384, - "repeatPanelId": 41, - "scopedVars": {}, - "title": "$job - $instance", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 0, - "y": 8 - }, - "hiddenSeries": false, - "id": 43, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 4, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "irate(process_cpu_seconds_total{kubernetes_pod_name=~\"$instance\"}[60s]) * 100\n\n", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "process_cpu_seconds_total", - "refId": "A", - "step": 20 - } - ], - "thresholds": [ - { - "colorMode": "ok", - "fill": false, - "line": true, - "op": "gt", - "value": 100, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 6, - "y": 8 - }, - "hiddenSeries": false, - "id": 44, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 1, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(jvm_memory_bytes_committed{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Committed", - "metric": "jvm_memory_bytes_committed", - "refId": "A", - "step": 20 - }, - { - "expr": "sum(jvm_memory_bytes_used{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Used", - "metric": "jvm_memory_bytes_used", - "refId": "B", - "step": 20 - }, - { - "expr": "sum(jvm_memory_bytes_max{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Max", - "metric": "jvm_memory_bytes_max", - "refId": "C", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Heap Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 12, - "y": 8 - }, - "hiddenSeries": false, - "id": 45, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 2, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_direct_bytes_used{kubernetes_pod_name=~\"$instance\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Used", - "metric": "jvm_memory_direct_bytes_used", - "refId": "A", - "step": 20 - }, - { - "expr": "jvm_memory_direct_bytes_max{kubernetes_pod_name=~\"$instance\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Max", - "metric": "jvm_memory_direct_bytes_max", - "refId": "B", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 18, - "y": 8 - }, - "hiddenSeries": false, - "id": 46, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 3, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [ - { - "alias": "old count", - "yaxis": 2 - }, - { - "alias": "young count", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(jvm_gc_collection_seconds_sum{kubernetes_pod_name=~\"$instance\"}[60s]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Pause", - "metric": "jvm_gc_collection_seconds_count", - "refId": "B", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC Time", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 14 - }, - "id": 47, - "panels": [], - "repeat": null, - "repeatIteration": 1617970014384, - "repeatPanelId": 41, - "scopedVars": {}, - "title": "$job - $instance", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "description": "", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 0, - "y": 15 - }, - "hiddenSeries": false, - "id": 48, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 4, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "irate(process_cpu_seconds_total{kubernetes_pod_name=~\"$instance\"}[60s]) * 100\n\n", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{kubernetes_pod_name}}", - "metric": "process_cpu_seconds_total", - "refId": "A", - "step": 20 - } - ], - "thresholds": [ - { - "colorMode": "ok", - "fill": false, - "line": true, - "op": "gt", - "value": 100, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 6, - "y": 15 - }, - "hiddenSeries": false, - "id": 49, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 1, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(jvm_memory_bytes_committed{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Committed", - "metric": "jvm_memory_bytes_committed", - "refId": "A", - "step": 20 - }, - { - "expr": "sum(jvm_memory_bytes_used{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Used", - "metric": "jvm_memory_bytes_used", - "refId": "B", - "step": 20 - }, - { - "expr": "sum(jvm_memory_bytes_max{kubernetes_pod_name=~\"$instance\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Max", - "metric": "jvm_memory_bytes_max", - "refId": "C", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Heap Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 12, - "y": 15 - }, - "hiddenSeries": false, - "id": 50, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 2, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_direct_bytes_used{kubernetes_pod_name=~\"$instance\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Used", - "metric": "jvm_memory_direct_bytes_used", - "refId": "A", - "step": 20 - }, - { - "expr": "jvm_memory_direct_bytes_max{kubernetes_pod_name=~\"$instance\"}", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "Max", - "metric": "jvm_memory_direct_bytes_max", - "refId": "B", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 6, - "x": 18, - "y": 15 - }, - "hiddenSeries": false, - "id": 51, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 3, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [ - { - "alias": "old count", - "yaxis": 2 - }, - { - "alias": "young count", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(jvm_gc_collection_seconds_sum{kubernetes_pod_name=~\"$instance\"}[60s]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "Pause", - "metric": "jvm_gc_collection_seconds_count", - "refId": "B", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC Time", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true + "datasource": { + "type": "datasource", + "uid": "grafana" }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" } - }, + ] + }, + "description": "JVM Related Metrics", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 11, + "links": [], + "panels": [ { "collapsed": false, - "datasource": null, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 21 + "y": 0 }, - "id": 52, + "id": 41, "panels": [], - "repeat": null, - "repeatIteration": 1617970014384, - "repeatPanelId": 41, - "scopedVars": {}, + "repeat": "instance", "title": "$job - $instance", "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "line" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent" + }, + { + "color": "red", + "value": 100 + } + ] + }, + "unit": "percent" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 6, "x": 0, - "y": 22 - }, - "hiddenSeries": false, - "id": 53, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false + "y": 1 }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "id": 4, "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 4, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "irate(process_cpu_seconds_total{kubernetes_pod_name=~\"$instance\"}[60s]) * 100\n\n", "format": "time_series", "interval": "", @@ -1543,122 +136,112 @@ "step": 20 } ], - "thresholds": [ - { - "colorMode": "ok", - "fill": false, - "line": true, - "op": "gt", - "value": 100, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 6, "x": 6, - "y": 22 - }, - "hiddenSeries": false, - "id": 54, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "total": false, - "values": false + "y": 1 }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "id": 1, "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 1, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(jvm_memory_bytes_committed{kubernetes_pod_name=~\"$instance\"})", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 2, - "legendFormat": "Committed", + "legendFormat": "Heap size", "metric": "jvm_memory_bytes_committed", "refId": "A", "step": 20 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(jvm_memory_bytes_used{kubernetes_pod_name=~\"$instance\"})", "format": "time_series", "interval": "", @@ -1669,6 +252,10 @@ "step": 20 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(jvm_memory_bytes_max{kubernetes_pod_name=~\"$instance\"})", "format": "time_series", "interval": "", @@ -1679,99 +266,97 @@ "step": 20 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Heap Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 6, "x": 12, - "y": 22 - }, - "hiddenSeries": false, - "id": 55, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false + "y": 1 }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "id": 2, "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 2, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "jvm_memory_direct_bytes_used{kubernetes_pod_name=~\"$instance\"}", "format": "time_series", "interval": "", @@ -1782,6 +367,10 @@ "step": 20 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "jvm_memory_direct_bytes_max{kubernetes_pod_name=~\"$instance\"}", "format": "time_series", "interval": "", @@ -1792,108 +381,139 @@ "step": 20 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} - }, - "overrides": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "s" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "old count" + }, + "properties": [ + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.axisPlacement", + "value": "right" + }, + { + "id": "custom.axisPlacement", + "value": "hidden" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "young count" + }, + "properties": [ + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.axisPlacement", + "value": "right" + }, + { + "id": "custom.axisPlacement", + "value": "hidden" + } + ] + } + ] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 6, "x": 18, - "y": 22 - }, - "hiddenSeries": false, - "id": 56, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false + "y": 1 }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "id": 3, "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeatIteration": 1617970014384, - "repeatPanelId": 3, - "repeatedByRow": true, - "scopedVars": {}, - "seriesOverrides": [ - { - "alias": "old count", - "yaxis": 2 + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false }, - { - "alias": "young count", - "yaxis": 2 + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(increase(jvm_gc_collection_seconds_sum{kubernetes_pod_name=~\"$instance\"}[60s]))", "format": "time_series", "hide": false, @@ -1905,118 +525,58 @@ "step": 20 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "GC Time", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 25, - "style": "dark", + "schemaVersion": 41, "tags": [ "pulsar" ], "templating": { "list": [ { - "allValue": null, "current": { - "selected": false, "text": "All", "value": "$__all" }, "datasource": "Prometheus", "definition": "", - "hide": 0, "includeAll": true, "label": "Cluster", - "multi": false, "name": "cluster", "options": [], "query": "jvm_memory_bytes_used{cluster=~\".+\"}", "refresh": 1, "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, "current": { - "selected": true, "text": "bookkeeper", "value": "bookkeeper" }, "datasource": "Prometheus", "definition": "", - "hide": 0, "includeAll": true, "label": "Job", - "multi": false, "name": "job", "options": [], "query": "jvm_memory_bytes_used{job=~\".+\"}", "refresh": 1, "regex": "/.*[^_]job=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, "current": { - "selected": false, "text": "All", "value": "$__all" }, "datasource": "Prometheus", "definition": "jvm_memory_bytes_used{job=~\"$job\", kubernetes_pod_name=~\".+\"}", - "hide": 0, "includeAll": true, "label": "Instance", "multi": true, @@ -2025,13 +585,8 @@ "query": "jvm_memory_bytes_used{job=~\"$job\", kubernetes_pod_name=~\".+\"}", "refresh": 2, "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -2050,17 +605,6 @@ "1h", "2h", "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" ] }, "timezone": "browser", diff --git a/helm/kaap-stack/grafana-dashboards/load-balance.json b/helm/kaap-stack/grafana-dashboards/load-balance.json index a68bbab0..6182149f 100644 --- a/helm/kaap-stack/grafana-dashboards/load-balance.json +++ b/helm/kaap-stack/grafana-dashboards/load-balance.json @@ -24,59 +24,92 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 49, + "id": 12, "links": [], - "liveNow": false, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 47, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -89,85 +122,92 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 48, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -180,42 +220,11 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Memory Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { "collapsed": false, - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, "gridPos": { "h": 1, "w": 24, @@ -224,67 +233,92 @@ }, "id": 15, "panels": [], - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "refId": "A" - } - ], "title": "Totals", "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 9 }, - "hiddenSeries": false, "id": 50, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -297,85 +331,92 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Bandwidth In Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 9 }, - "hiddenSeries": false, "id": 49, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -388,85 +429,92 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Direct Memory Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 17 }, - "hiddenSeries": false, "id": 51, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -479,41 +527,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Bandwidth Out Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -521,44 +538,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 5, "x": 12, "y": 17 }, - "hiddenSeries": false, "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -573,41 +628,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Unload Broker Total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -615,44 +639,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 5, "x": 17, "y": 17 }, - "hiddenSeries": false, "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -665,41 +727,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Unload Bundle Total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -707,44 +738,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 5, "x": 0, "y": 25 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -757,42 +826,11 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Bundles Split Total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { "collapsed": false, - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, "gridPos": { "h": 1, "w": 24, @@ -802,23 +840,10 @@ "id": 13, "panels": [], "repeat": "instance", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, - "refId": "A" - } - ], "title": "$instance", "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -826,44 +851,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "line+area" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent" + }, + { + "color": "orange", + "value": 85 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 5, "x": 0, "y": 34 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -876,50 +939,10 @@ "refId": "A" } ], - "thresholds": [ - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 85, - "yaxis": "left" - } - ], - "timeRegions": [], "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -927,44 +950,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 5, "x": 5, "y": 34 }, - "hiddenSeries": false, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -977,41 +1038,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -1019,44 +1049,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 4, "x": 10, "y": 34 }, - "hiddenSeries": false, "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1069,41 +1137,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Direct Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -1111,44 +1148,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 4, "x": 14, "y": 34 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1161,41 +1236,10 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Bandwidth In", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -1203,44 +1247,82 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 4, "x": 18, "y": 34 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "9.2.4", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1253,46 +1335,18 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Bandwidth Out", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 37, - "style": "dark", + "schemaVersion": 41, "tags": [], "templating": { "list": [ { "current": { - "selected": false, "text": "All", "value": "$__all" }, @@ -1301,9 +1355,7 @@ "uid": "prometheus" }, "definition": "pulsar_lb_memory_usage{job=~\"broker.*\", kubernetes_pod_name=~\".+\"}", - "hide": 0, "includeAll": true, - "multi": false, "name": "instance", "options": [], "query": { @@ -1312,12 +1364,7 @@ }, "refresh": 1, "regex": "/.*[^_]kubernetes_pod_name=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -1339,8 +1386,7 @@ ] }, "timezone": "", - "title": "Pulsar / Load Balancing - 3.1", + "title": "Pulsar / Load Balancing", "uid": "Mcz1HWESz", - "version": 2, - "weekStart": "" -} \ No newline at end of file + "version": 1 +} diff --git a/helm/kaap-stack/grafana-dashboards/messaging.json b/helm/kaap-stack/grafana-dashboards/messaging.json index bfa650c9..ddac8419 100644 --- a/helm/kaap-stack/grafana-dashboards/messaging.json +++ b/helm/kaap-stack/grafana-dashboards/messaging.json @@ -1,45 +1,12 @@ { - "__inputs": [ - { - "name": "DS_TEST-CLUSTER", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "5.3.2" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "5.0.0" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "5.0.0" - } - ], "annotations": { "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -50,10 +17,9 @@ }, "description": "Messaging Related Metrics Per Namespace", "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": null, - "iteration": 1543830651050, + "id": 13, "links": [], "panels": [ { @@ -70,22 +36,38 @@ "type": "row" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] }, "gridPos": { "h": 5, @@ -94,78 +76,73 @@ "y": 1 }, "id": 26, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_topics_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "intervalFactor": 1, "refId": "A" } ], - "thresholds": "", "title": "Topics", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] }, "gridPos": { "h": 5, @@ -174,42 +151,31 @@ "y": 1 }, "id": 27, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_producers_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -218,36 +184,42 @@ "refId": "A" } ], - "thresholds": "", "title": "Producers", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] }, "gridPos": { "h": 5, @@ -256,42 +228,31 @@ "y": 1 }, "id": 29, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_subscriptions_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -300,36 +261,42 @@ "refId": "A" } ], - "thresholds": "", "title": "Subscriptions", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] }, "gridPos": { "h": 5, @@ -338,42 +305,31 @@ "y": 1 }, "id": 28, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_consumers_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -382,36 +338,42 @@ "refId": "A" } ], - "thresholds": "", "title": "Consumers", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] }, "gridPos": { "h": 5, @@ -420,42 +382,31 @@ "y": 1 }, "id": 31, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_msg_backlog{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -464,36 +415,42 @@ "refId": "A" } ], - "thresholds": "", "title": "Msg Backlog", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] }, "gridPos": { "h": 5, @@ -502,42 +459,31 @@ "y": 1 }, "id": 30, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_size{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -546,18 +492,8 @@ "refId": "A" } ], - "thresholds": "", "title": "Storage Size", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { "collapsed": true, @@ -570,12 +506,14 @@ "id": 18, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -583,30 +521,13 @@ "y": 7 }, "id": 16, - "legend": { - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_rate_in{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "interval": "", @@ -617,53 +538,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Local publish rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg/s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -671,29 +557,13 @@ "y": 7 }, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_rate_out{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "intervalFactor": 2, @@ -703,53 +573,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Local delivery rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -757,29 +592,13 @@ "y": 14 }, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_throughput_in{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "interval": "", @@ -790,54 +609,19 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Local publish throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", - "fill": 1, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -845,30 +629,13 @@ "y": 14 }, "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_throughput_out{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "interval": "", @@ -879,54 +646,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Local delivery throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 0, - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -934,29 +665,13 @@ "y": 21 }, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_topics_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -967,6 +682,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_producers_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -977,6 +696,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_subscriptions_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "intervalFactor": 2, @@ -986,6 +709,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_consumers_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "intervalFactor": 2, @@ -995,56 +722,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Topics - Producers - Subscriptions - Consumers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "count", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -1052,29 +741,13 @@ "y": 21 }, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_msg_backlog{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "interval": "", @@ -1085,45 +758,8 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Local backlog", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Messages", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], "title": "Namespaces", @@ -1140,25 +776,14 @@ "id": 20, "panels": [ { - "aliasColors": { - "0 - 0.5 ms": "#2F575E", - "0.5 - 1 ms": "#3F6833", - "1 - 5 ms": "#629E51", - "10 - 20 ms": "#E5A8E2", - "100 - 200 ms": "#EF843C", - "20 - 50 ms": "#65C5DB", - "200 ms - 1 s": "#EA6460", - "5 - 10 ms": "#1F78C1", - "50 - 100 ms": "#E5AC0E", - "< +Inf ms": "#BF1B00", - "< 0.5 ms": "#508642", - "> 1 s": "#BF1B00" + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 5, "gridPos": { "h": 7, "w": 12, @@ -1166,34 +791,13 @@ "y": 8 }, "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "< 100 ms", - "yaxis": 1 - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_0_5{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1204,6 +808,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_1{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1214,6 +822,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_5{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1224,6 +836,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_10{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1234,6 +850,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_20{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1244,6 +864,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_50{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1254,6 +878,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_100{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "hide": false, @@ -1265,6 +893,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_200{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "intervalFactor": 2, @@ -1274,6 +906,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_1000{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "intervalFactor": 2, @@ -1283,6 +919,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_overflow{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1293,53 +933,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Storage Write Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -1347,29 +952,13 @@ "y": 8 }, "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_size{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -1380,55 +969,19 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Storage Size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "Rate of writes into storage (can be lower than publish rate, when batching is enabled)", - "fill": 1, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -1436,29 +989,13 @@ "y": 15 }, "id": 13, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -1469,54 +1006,19 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Storage Write Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "entry / s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "Reads from bookies", - "fill": 1, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -1524,29 +1026,13 @@ "y": 15 }, "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_read_latency_count{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -1557,53 +1043,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Storage read entry rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "entries / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 6, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 6, "w": 24, @@ -1611,34 +1062,13 @@ "y": 22 }, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "< 2 KB", - "yaxis": 1 - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_128{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1649,6 +1079,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_512{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1659,6 +1093,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_1_kb{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1669,6 +1107,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_2_kb{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1679,6 +1121,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_4_kb{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1689,6 +1135,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_16_kb{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1699,6 +1149,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_100_kb{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1709,6 +1163,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_1_mb{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1719,6 +1177,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_overflow{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -1729,45 +1191,8 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Storage entry size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], "title": "Storage", @@ -1784,12 +1209,14 @@ "id": 22, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -1797,29 +1224,13 @@ "y": 9 }, "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_replication_rate_in{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\", remote_cluster!=\"local\"}) by (cluster, remote_cluster)", "format": "time_series", "interval": "", @@ -1830,53 +1241,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Incoming replication rate | any → $cluster", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -1884,29 +1260,13 @@ "y": 9 }, "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_replication_rate_out{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"})", "format": "time_series", "intervalFactor": 2, @@ -1916,53 +1276,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Outgoing replication rate | $cluster → any", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 24, @@ -1970,29 +1295,13 @@ "y": 16 }, "id": 15, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_replication_backlog{cluster=~\"$cluster\", job=~\"broker\", namespace=~\"$namespace\"}) by (cluster, remote_cluster)", "format": "time_series", "intervalFactor": 2, @@ -2002,100 +1311,53 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Replication backlog | $cluster → any", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "messages", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], "title": "Geo Replication", "type": "row" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 16, - "style": "dark", + "schemaVersion": 41, "tags": [ "pulsar" ], "templating": { "list": [ { - "allValue": null, - "current": {}, + "current": { + "text": "All", + "value": "$__all" + }, "datasource": "Prometheus", - "hide": 0, "includeAll": true, "label": "Cluster", - "multi": false, "name": "cluster", "options": [], "query": "pulsar_rate_in{cluster=~\".+\"}", "refresh": 2, "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, - "current": {}, + "current": { + "text": "All", + "value": "$__all" + }, "datasource": "Prometheus", - "hide": 0, "includeAll": true, "label": "Namespace", - "multi": false, "name": "namespace", "options": [], "query": "pulsar_rate_in{namespace=~\".+\", cluster=~\"$cluster\"}", "refresh": 2, "regex": "/[\\s,{]namespace=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -2103,34 +1365,9 @@ "from": "now-1h", "to": "now" }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, + "timepicker": {}, "timezone": "browser", "title": "Pulsar / Messaging", "uid": "sWPi0L-mk", - "version": 4 + "version": 2 } - diff --git a/helm/kaap-stack/grafana-dashboards/namespace.json b/helm/kaap-stack/grafana-dashboards/namespace.json index 74122d15..5af2bc7b 100644 --- a/helm/kaap-stack/grafana-dashboards/namespace.json +++ b/helm/kaap-stack/grafana-dashboards/namespace.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,60 +16,99 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "iteration": 1596845897119, + "id": 14, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg/s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 16, - "legend": { - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_rate_in{cluster=~\"$cluster\", namespace=~\"$namespace\"}) by (cluster, namespace)", "interval": "", "intervalFactor": 2, @@ -76,95 +118,98 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local publish rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_rate_out{cluster=~\"$cluster\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "intervalFactor": 2, @@ -174,95 +219,97 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local delivery rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 7 }, - "hiddenSeries": false, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_throughput_in{cluster=~\"$cluster\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "interval": "", @@ -273,97 +320,99 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local publish throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 7 }, - "hiddenSeries": false, "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_throughput_out{cluster=~\"$cluster\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "interval": "", @@ -374,96 +423,97 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local delivery throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "decimals": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "count", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 14 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_topics_count{cluster=~\"$cluster\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -474,6 +524,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_producers_count{cluster=~\"$cluster\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -484,6 +538,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_subscriptions_count{cluster=~\"$cluster\", namespace=~\"$namespace\"})", "format": "time_series", "intervalFactor": 2, @@ -493,6 +551,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_consumers_count{cluster=~\"$cluster\", namespace=~\"$namespace\"})", "format": "time_series", "intervalFactor": 2, @@ -502,97 +564,98 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Topics - Producers - Subscriptions - Consumers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "short", - "label": "count", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Messages", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 14 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_msg_backlog{cluster=~\"$cluster\", namespace=~\"$namespace\"}) by (cluster, namespace)", "format": "time_series", "interval": "", @@ -603,113 +666,278 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local backlog", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Messages", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": { - "0 - 0.5 ms": "#2F575E", - "0.5 - 1 ms": "#3F6833", - "1 - 5 ms": "#629E51", - "10 - 20 ms": "#E5A8E2", - "100 - 200 ms": "#EF843C", - "20 - 50 ms": "#65C5DB", - "200 ms - 1 s": "#EA6460", - "5 - 10 ms": "#1F78C1", - "50 - 100 ms": "#E5AC0E", - "< +Inf ms": "#BF1B00", - "< 0.5 ms": "#508642", - "> 1 s": "#BF1B00" + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "0 - 0.5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#2F575E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "0.5 - 1 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#3F6833", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "1 - 5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#629E51", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "10 - 20 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E5A8E2", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "100 - 200 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EF843C", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "20 - 50 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#65C5DB", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "200 ms - 1 s" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "5 - 10 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "50 - 100 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E5AC0E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "< +Inf ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BF1B00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "< 0.5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "> 1 s" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BF1B00", + "mode": "fixed" + } + } + ] + } + ] }, - "fill": 5, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 21 }, - "hiddenSeries": false, "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "< 100 ms", - "yaxis": 1 + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_0_5{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -720,6 +948,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_1{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -730,6 +962,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_5{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -740,6 +976,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_10{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -750,6 +990,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_20{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -760,6 +1004,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_50{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -770,6 +1018,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_100{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "hide": false, @@ -781,6 +1033,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_200{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "intervalFactor": 2, @@ -790,6 +1046,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_1000{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "intervalFactor": 2, @@ -799,6 +1059,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_overflow{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "format": "time_series", "interval": "", @@ -809,95 +1073,97 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Storage Write Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 21 }, - "hiddenSeries": false, "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_size{cluster=~\"$cluster\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -908,95 +1174,98 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Storage Size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 28 }, - "hiddenSeries": false, "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_replication_rate_in{cluster=~\"$cluster\", namespace=~\"$namespace\", remote_cluster!=\"local\"}) by (cluster, remote_cluster)", "format": "time_series", "interval": "", @@ -1007,95 +1276,98 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Incoming replication rate | any → $cluster", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 28 }, - "hiddenSeries": false, "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "dataLinks": [] + "dataLinks": [], + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_replication_rate_out{cluster=~\"$cluster\", namespace=~\"$namespace\"})", "format": "time_series", "intervalFactor": 2, @@ -1105,60 +1377,20 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Outgoing replication rate | $cluster → any", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, "gridPos": { "h": 7, "w": 12, @@ -1166,29 +1398,13 @@ "y": 35 }, "id": 15, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_replication_backlog{cluster=~\"$cluster\", namespace=~\"$namespace\"}) by (cluster, remote_cluster)", "format": "time_series", "intervalFactor": 2, @@ -1198,55 +1414,20 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Replication backlog | $cluster → any", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "messages", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 6, "gridPos": { "h": 7, "w": 12, @@ -1254,34 +1435,13 @@ "y": 35 }, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "< 2 KB", - "yaxis": 1 - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_128{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1291,6 +1451,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_512{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1300,6 +1464,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_1_kb{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1309,6 +1477,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_2_kb{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1318,6 +1490,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_4_kb{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1327,6 +1503,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_16_kb{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1336,6 +1516,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_100_kb{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1345,6 +1529,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_1_mb{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1354,6 +1542,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_overflow{cluster=~\"$cluster\", namespace=~\"$namespace\"}) / 60.0", "interval": "", "intervalFactor": 2, @@ -1363,48 +1555,14 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Storage entry size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "Rate of writes into storage (can be lower than publish rate, when batching is enabled)", "fieldConfig": { "defaults": { @@ -1412,7 +1570,6 @@ }, "overrides": [] }, - "fill": 1, "gridPos": { "h": 7, "w": 12, @@ -1420,29 +1577,13 @@ "y": 42 }, "id": 13, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_rate{cluster=~\"$cluster\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -1453,48 +1594,14 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Storage Write Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "entry / s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "Reads from bookies", "fieldConfig": { "defaults": { @@ -1502,7 +1609,6 @@ }, "overrides": [] }, - "fill": 1, "gridPos": { "h": 7, "w": 12, @@ -1510,29 +1616,13 @@ "y": 42 }, "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_read_rate{cluster=~\"$cluster\", namespace=~\"$namespace\"})", "format": "time_series", "interval": "", @@ -1543,102 +1633,51 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Storage read entry rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "entries / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 25, - "style": "dark", + "schemaVersion": 41, "tags": [ "pulsar" ], "templating": { "list": [ { - "allValue": null, "current": { - "selected": false, - "text": "toronto-do", - "value": "toronto-do" + "text": "pulsar", + "value": "pulsar" }, "datasource": "Prometheus", "definition": "pulsar_producers_count{cluster=~\".+\"}", - "hide": 0, "includeAll": false, "label": "Cluster", - "multi": false, "name": "cluster", "options": [], "query": "pulsar_producers_count{cluster=~\".+\"}", "refresh": 1, "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, "current": { - "selected": true, - "text": "public/default", - "value": "public/default" + "text": "pulsar/pulsar/pulsar-broker-0.pulsar-broker.default.svc.cluster.local:8080", + "value": "pulsar/pulsar/pulsar-broker-0.pulsar-broker.default.svc.cluster.local:8080" }, "datasource": "Prometheus", "definition": "pulsar_producers_count{cluster=\"$cluster\"}", - "hide": 0, "includeAll": false, "label": "Namespace", - "multi": false, "name": "namespace", "options": [], "query": "pulsar_producers_count{cluster=\"$cluster\"}", "refresh": 2, "regex": "/.*,namespace=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -1657,17 +1696,6 @@ "1h", "2h", "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" ] }, "timezone": "browser", diff --git a/helm/kaap-stack/grafana-dashboards/node.json b/helm/kaap-stack/grafana-dashboards/node.json index 82f0c3ba..967a6247 100644 --- a/helm/kaap-stack/grafana-dashboards/node.json +++ b/helm/kaap-stack/grafana-dashboards/node.json @@ -1,45 +1,12 @@ { - "__inputs": [ - { - "name": "DS_TEST-CLUSTER", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "5.3.2" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "5.0.0" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "5.0.0" - } - ], "annotations": { "list": [ { "builtIn": 1, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -50,10 +17,9 @@ }, "description": "System Metrics on Nodes", "editable": true, - "gnetId": 159, + "fiscalYearStartMonth": 0, "graphTooltip": 1, - "id": null, - "iteration": 1543911290195, + "id": 15, "links": [ { "asDropdown": false, @@ -79,30 +45,37 @@ }, "id": 45, "panels": [], - "repeat": null, "title": "System Stats", "type": "row" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "Prometheus", - "decimals": 1, - "editable": true, - "error": false, - "format": "s", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 300 + }, + { + "color": "rgba(50, 172, 45, 0.97)", + "value": 3600 + } + ] + }, + "unit": "s" + }, + "overrides": [] }, "gridPos": { "h": 3, @@ -110,45 +83,33 @@ "x": 0, "y": 1 }, - "height": "50px", "id": 19, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "s", - "postfixFontSize": "80%", - "prefix": "", - "prefixFontSize": "80%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { "calculatedInterval": "10m", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_time_seconds{instance=\"$instance\"} - node_boot_time_seconds{instance=\"$instance\"}", @@ -162,33 +123,42 @@ "step": 300 } ], - "thresholds": "300,3600", "title": "System Uptime", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "Prometheus", - "editable": true, - "error": false, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] }, "gridPos": { "h": 3, @@ -196,44 +166,32 @@ "x": 6, "y": 1 }, - "height": "55px", "id": 25, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "80%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "count(node_cpu_seconds_total{mode=\"user\", instance=\"$instance\"})", "format": "time_series", "interval": "5m", @@ -242,39 +200,43 @@ "step": 300 } ], - "thresholds": "", "title": "Virtual CPUs", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "decimals": 2, + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" + }, + "overrides": [] }, "gridPos": { "h": 3, @@ -282,44 +244,32 @@ "x": 12, "y": 1 }, - "height": "55px", "id": 26, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "80%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "node_memory_MemAvailable_bytes{instance=\"$instance\"}", "format": "time_series", "interval": "", @@ -330,39 +280,39 @@ "step": 30 } ], - "thresholds": "", "title": "RAM available", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 0, - "editable": true, - "error": false, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "decimals": 0, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(50, 172, 45, 0.97)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 90 + }, + { + "color": "rgba(245, 54, 54, 0.9)", + "value": 95 + } + ] + }, + "unit": "percent" + }, + "overrides": [] }, "gridPos": { "h": 3, @@ -370,45 +320,33 @@ "x": 18, "y": 1 }, - "height": "50px", "id": 9, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "80%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { "calculatedInterval": "10m", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "(node_memory_MemAvailable_bytes{instance=\"$instance\"} or (node_memory_MemFree_bytes{instance=\"$instance\"} + node_memory_Buffers_bytes{instance=\"$instance\"} + node_memory_Cached_bytes{instance=\"$instance\"})) / node_memory_MemTotal_bytes{instance=\"$instance\"} * 100", @@ -422,61 +360,103 @@ "step": 300 } ], - "thresholds": "90,95", "title": "Memory Available", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [], - "valueName": "current" + "type": "stat" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 6, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 24, "x": 0, "y": 4 }, - "height": "260px", "id": 2, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "total": false, - "values": true + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "sum(rate(node_cpu_seconds_total{instance=\"$instance\"}[$interval])) by (mode) * 100 / count(node_cpu_seconds_total{instance=\"$instance\"}) by (mode) or sum(irate(node_cpu_seconds_total{instance=\"$instance\"}[5m])) by (mode) * 100 / count(node_cpu_seconds_total{instance=\"$instance\"}) by (mode)", @@ -489,57 +469,70 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "CPU Usage", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - "yaxes": [ - { - "format": "percent", - "label": "", - "logBase": 1, - "max": 100, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], "min": 0, - "show": true + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 24, @@ -547,48 +540,31 @@ "y": 11 }, "id": 18, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "color": "#E24D42", - "instance": "Load 1m" - }, - { - "color": "#E0752D", - "instance": "Load 5m" + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true }, - { - "color": "#E5AC0E", - "instance": "Load 15m" + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + }, + "pluginVersion": "11.6.1", "targets": [ { "calculatedInterval": "10s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_load1{instance=\"$instance\"}", @@ -603,6 +579,10 @@ }, { "calculatedInterval": "10s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_load5{instance=\"$instance\"}", @@ -617,6 +597,10 @@ }, { "calculatedInterval": "10s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_load15{instance=\"$instance\"}", @@ -630,58 +614,70 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Load Average", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - "yaxes": [ - { - "format": "none", - "label": "", - "logBase": 1, - "max": null, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], "min": 0, - "show": true + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, - { - "format": "none", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 24, @@ -689,48 +685,31 @@ "y": 18 }, "id": 40, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "color": "#E24D42", - "instance": "Load 1m" - }, - { - "color": "#E0752D", - "instance": "Load 5m" + "options": { + "legend": { + "calcs": [ + "mean", + "max", + "min" + ], + "displayMode": "table", + "placement": "right", + "showLegend": true }, - { - "color": "#E5AC0E", - "instance": "Load 15m" + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + }, + "pluginVersion": "11.6.1", "targets": [ { "calculatedInterval": "10s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_vmstat_pgpgin{instance=\"$instance\"}[$interval]) * 1024 or irate(node_vmstat_pgpgin{instance=\"$instance\"}[5m]) * 1024", @@ -745,6 +724,10 @@ }, { "calculatedInterval": "10s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_vmstat_pgpgout{instance=\"$instance\"}[$interval]) * 1024 or irate(node_vmstat_pgpgout{instance=\"$instance\"}[5m]) * 1024", @@ -758,46 +741,8 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Page In/Page Out", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "decbytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { "collapsed": true, @@ -810,16 +755,14 @@ "id": 51, "panels": [ { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -827,39 +770,14 @@ "y": 3 }, "id": 24, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "color": "#EF843C", - "instance": "Forks" - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2m", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_forks_total{instance=\"$instance\"}[$interval]) or irate(node_forks_total{instance=\"$instance\"}[5m])", @@ -873,58 +791,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Forks", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "none", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -932,43 +810,14 @@ "y": 3 }, "id": 20, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "color": "#E24D42", - "instance": "Processes blocked waiting for I/O to complete" - }, - { - "color": "#6ED0E0", - "instance": "Processes in runnable state" - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2m", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_procs_running{instance=\"$instance\"}", @@ -983,6 +832,10 @@ }, { "calculatedInterval": "2m", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_procs_blocked{instance=\"$instance\"}", @@ -996,58 +849,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Processes", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "none", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -1055,34 +868,14 @@ "y": 11 }, "id": 27, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2m", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_context_switches_total{instance=\"$instance\"}[$interval]) or irate(node_context_switches_total{instance=\"$instance\"}[5m])", @@ -1096,58 +889,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Context Switches", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "none", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -1155,39 +908,14 @@ "y": 11 }, "id": 28, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "color": "#D683CE", - "instance": "Interrupts" - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2m", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_intr_total{instance=\"$instance\"}[$interval]) or irate(node_intr_total{instance=\"$instance\"}[5m])", @@ -1201,46 +929,8 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Interrupts", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "none", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], "title": "CPU", @@ -1257,67 +947,29 @@ "id": 46, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 6, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 2 }, - "height": "", "id": 6, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "color": "#0A437C", - "instance": "Used" - }, - { - "color": "#5195CE", - "instance": "Available" - }, - { - "color": "#052B51", - "instance": "Total", - "legend": false, - "stack": false - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_MemTotal_bytes{instance=\"$instance\"}", @@ -1332,6 +984,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_MemTotal_bytes{instance=\"$instance\"} - (node_memory_MemAvailable_bytes{instance=\"$instance\"} or (node_memory_MemFree_bytes{instance=\"$instance\"} + node_memory_Buffers_bytes{instance=\"$instance\"} + node_memory_Cached_bytes{instance=\"$instance\"}))", @@ -1346,6 +1002,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_MemAvailable_bytes{instance=\"$instance\"} or (node_memory_MemFree_bytes{instance=\"$instance\"} + node_memory_Buffers_bytes{instance=\"$instance\"} + node_memory_Cached_bytes{instance=\"$instance\"})", @@ -1359,94 +1019,33 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Memory", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 6, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 2 }, - "height": "", "id": 29, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_MemTotal_bytes{instance=\"$instance\"} - (node_memory_MemFree_bytes{instance=\"$instance\"} + node_memory_Buffers_bytes{instance=\"$instance\"} + node_memory_Cached_bytes{instance=\"$instance\"})", @@ -1461,6 +1060,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_MemFree_bytes{instance=\"$instance\"}", @@ -1475,6 +1078,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_Buffers_bytes{instance=\"$instance\"}", @@ -1489,6 +1096,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_Cached_bytes{instance=\"$instance\"}", @@ -1502,49 +1113,10 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Memory Distribution", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "repeat": null, "title": "Memory", "type": "row" }, @@ -1559,16 +1131,14 @@ "id": 49, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 6, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -1576,43 +1146,14 @@ "y": 67 }, "id": 23, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "color": "#584477", - "instance": "Used" - }, - { - "color": "#AEA2E0", - "instance": "Free" - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_SwapTotal_bytes{instance=\"$instance\"} - node_memory_SwapFree_bytes{instance=\"$instance\"}", @@ -1627,6 +1168,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "node_memory_SwapFree_bytes{instance=\"$instance\"}", @@ -1640,58 +1185,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Swap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -1699,34 +1204,14 @@ "y": 67 }, "id": 30, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_vmstat_pswpin{instance=\"$instance\"}[$interval]) * 4096 or irate(node_vmstat_pswpin{instance=\"$instance\"}[5m]) * 4096", @@ -1741,6 +1226,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_vmstat_pswpout{instance=\"$instance\"}[$interval]) * 4096 or irate(node_vmstat_pswpout{instance=\"$instance\"}[5m]) * 4096", @@ -1754,54 +1243,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Swap Activity", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -1809,29 +1262,13 @@ "y": 75 }, "id": 44, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(node_vmstat_pgmajfault{instance=\"$instance\"}[1m])", "format": "time_series", "intervalFactor": 2, @@ -1839,6 +1276,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(node_vmstat_pgfault{instance=\"$instance\"}[1m])", "format": "time_series", "intervalFactor": 2, @@ -1846,53 +1287,18 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Mem Fault", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -1900,29 +1306,13 @@ "y": 75 }, "id": 42, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(node_vmstat_pgpgin{instance=\"$instance\"}[1m])", "format": "time_series", "intervalFactor": 2, @@ -1930,6 +1320,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(node_vmstat_pgpgout{instance=\"$instance\"}[1m])", "format": "time_series", "intervalFactor": 2, @@ -1937,6 +1331,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(node_vmstat_pswpout{instance=\"$instance\"}[1m])", "format": "time_series", "intervalFactor": 2, @@ -1944,6 +1342,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "rate(node_vmstat_pswpin{instance=\"$instance\"}[1m])", "format": "time_series", "intervalFactor": 2, @@ -1951,48 +1353,10 @@ "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Page/Swap in/out", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "repeat": null, "title": "Swap", "type": "row" }, @@ -2007,16 +1371,14 @@ "id": 47, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -2024,35 +1386,14 @@ "y": 76 }, "id": 35, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 200, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_disk_io_time_seconds_total{instance=\"$instance\"}[1m]) / 1000", @@ -2066,58 +1407,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "I/O Util", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -2125,35 +1426,14 @@ "y": 76 }, "id": 36, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 200, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_disk_io_now{instance=\"$instance\"}[1m])", @@ -2167,58 +1447,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "I/O in Progress", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -2226,35 +1466,14 @@ "y": 84 }, "id": 37, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 200, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_disk_read_time_seconds_total{instance=\"$instance\"}[1m]) / 1000 / rate(node_disk_reads_completed_total{instance=\"$instance\"}[1m])", @@ -2268,58 +1487,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "I/O Average Read Time", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 2, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -2327,35 +1506,14 @@ "y": 84 }, "id": 38, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 200, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_disk_write_time_seconds_total{instance=\"$instance\"}[1m]) / 1000 / rate(node_disk_writes_completed_total{instance=\"$instance\"}[1m])", @@ -2369,49 +1527,10 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "I/O Average Write Time", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "repeat": null, "title": "I/O", "type": "row" }, @@ -2426,12 +1545,14 @@ "id": 48, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -2439,29 +1560,13 @@ "y": 93 }, "id": 33, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "node_filefd_allocated{instance=\"$instance\"}", "format": "time_series", "intervalFactor": 2, @@ -2471,53 +1576,18 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Allocated File Descriptor", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, @@ -2525,29 +1595,13 @@ "y": 93 }, "id": 34, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "node_filefd_maximum{instance=\"$instance\"}", "format": "time_series", "intervalFactor": 2, @@ -2557,48 +1611,10 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Maximum File Descriptor", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "repeat": null, "title": "File Descriptors", "type": "row" }, @@ -2613,16 +1629,14 @@ "id": 53, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 6, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -2630,34 +1644,14 @@ "y": 7 }, "id": 21, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_network_receive_bytes_total{instance=\"$instance\", device!=\"lo\"}[$interval]) or irate(node_network_receive_bytes_total{instance=\"$instance\", device!=\"lo\"}[5m]) ", @@ -2672,6 +1666,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "rate(node_network_transmit_bytes_total{instance=\"$instance\", device!=\"lo\"}[$interval]) or irate(node_network_transmit_bytes_total{instance=\"$instance\", device!=\"lo\"}[5m])", @@ -2685,58 +1683,18 @@ "target": "" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Network Traffic", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fill": 6, - "grid": {}, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 12, @@ -2744,36 +1702,14 @@ "y": 7 }, "id": 22, - "instanceColors": {}, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "sort": "min", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "options": {}, "targets": [ { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "sum(increase(node_network_receive_bytes_total{instance=\"$instance\", device!=\"lo\"}[1h]))", @@ -2789,6 +1725,10 @@ }, { "calculatedInterval": "2s", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "datasourceErrors": {}, "errors": {}, "expr": "sum(increase(node_network_transmit_bytes_total{instance=\"$instance\", device!=\"lo\"}[1h]))", @@ -2803,55 +1743,20 @@ "target": "" } ], - "thresholds": [], "timeFrom": "24h", - "timeShift": null, "title": "Network Utilization Hourly", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "Number of TCP sockets in state inuse.", - "fill": 1, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 8, "w": 24, @@ -2859,29 +1764,13 @@ "y": 15 }, "id": 32, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "node_sockstat_TCP_inuse{instance=\"$instance\"}", "format": "time_series", "intervalFactor": 1, @@ -2891,61 +1780,23 @@ "step": 5 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "TCP In Use", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], "title": "Network", "type": "row" } ], + "preload": false, "refresh": "30s", - "schemaVersion": 16, - "style": "dark", + "schemaVersion": 41, "tags": [ "pulsar" ], "templating": { "list": [ { - "allFormat": "glob", "auto": true, "auto_count": 200, "auto_min": "1s", @@ -2953,19 +1804,9 @@ "text": "5s", "value": "5s" }, - "datasource": "Prometheus", - "hide": 0, - "includeAll": false, "label": "Interval", - "multi": false, - "multiFormat": "glob", "name": "interval", "options": [ - { - "selected": false, - "text": "auto", - "value": "$__auto_interval_interval" - }, { "selected": false, "text": "1s", @@ -3004,32 +1845,23 @@ ], "query": "1s,5s,1m,5m,1h,6h,1d", "refresh": 2, - "skipUrlSync": false, "type": "interval" }, { - "allFormat": "glob", - "allValue": null, - "current": {}, + "current": { + "text": "10.89.0.2:9100", + "value": "10.89.0.2:9100" + }, "datasource": "Prometheus", - "hide": 0, "includeAll": false, "label": "Instance", - "multi": false, - "multiFormat": "regex values", "name": "instance", "options": [], "query": "node_time_seconds{instance=~\".+\"}", "refresh": 1, - "refresh_on_load": false, "regex": "/.*[^_]instance=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "instance", - "tags": [], - "tagsQuery": "up", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -3037,39 +1869,9 @@ "from": "now-1h", "to": "now" }, - "timepicker": { - "collapse": false, - "enable": true, - "notice": false, - "now": true, - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "status": "Stable", - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ], - "type": "timepicker" - }, + "timepicker": {}, "timezone": "browser", "title": "Pulsar / Node", "uid": "U_EkxTLik", - "version": 8 + "version": 1 } diff --git a/helm/kaap-stack/grafana-dashboards/offload.json b/helm/kaap-stack/grafana-dashboards/offload.json index e5f63d8e..ef492287 100644 --- a/helm/kaap-stack/grafana-dashboards/offload.json +++ b/helm/kaap-stack/grafana-dashboards/offload.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,395 +16,403 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 35, + "id": 16, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 10, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_offloaded_size)", "interval": "", "legendFormat": "Bytes", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Offload Total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 10, "y": 0 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum by (namespace) (\n pulsar_storage_offloaded_size\n)", "interval": "", "legendFormat": "{{ namespace }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Offload By Namespace", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "(rate(pulsar_storage_offloaded_size[5m]))/300 > 0", "interval": "", "legendFormat": "{{ topic }}", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Byte Rate Per Topic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 9 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum((rate(pulsar_storage_offloaded_size[5m]))/300)", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Offload Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "schemaVersion": 26, - "style": "dark", + "preload": false, + "schemaVersion": 41, "tags": [], "templating": { "list": [] @@ -414,5 +425,5 @@ "timezone": "", "title": "Pulsar / Offload", "uid": "qKohp_qMz", - "version": 3 + "version": 1 } diff --git a/helm/kaap-stack/grafana-dashboards/overview-by-broker.json b/helm/kaap-stack/grafana-dashboards/overview-by-broker.json index c3d8fae7..afea4a2a 100644 --- a/helm/kaap-stack/grafana-dashboards/overview-by-broker.json +++ b/helm/kaap-stack/grafana-dashboards/overview-by-broker.json @@ -25,17 +25,11 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 50, - "iteration": 1662569682845, + "id": 18, "links": [], - "liveNow": false, "panels": [ { "collapsed": false, - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, "gridPos": { "h": 1, "w": 24, @@ -72,8 +66,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -92,13 +85,13 @@ "y": 1 }, "id": 27, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "max" @@ -106,9 +99,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "count(node_cpu_seconds_total{mode=\"system\"})", @@ -147,8 +142,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -167,13 +161,13 @@ "y": 1 }, "id": 25, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "max" @@ -181,9 +175,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "sum(node_memory_MemTotal_bytes)", @@ -222,8 +218,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -242,13 +237,13 @@ "y": 1 }, "id": 28, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -256,9 +251,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "count(count(up{job=\"zookeeper\"}) by (instance))", @@ -296,8 +293,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -316,13 +312,13 @@ "y": 1 }, "id": 15, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -330,9 +326,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "count(count(up{job=\"bookkeeper\"}) by (instance))", @@ -370,8 +368,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -390,13 +387,13 @@ "y": 1 }, "id": 32, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -404,9 +401,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "count(count(up{job=\"broker\"}) by (instance))", @@ -445,8 +444,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -465,13 +463,13 @@ "y": 1 }, "id": 29, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -479,9 +477,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "count(count(up{job=\"proxy\"}) by (instance))", @@ -519,8 +519,7 @@ "mode": "absolute", "steps": [ { - "color": "#d44a3a", - "value": null + "color": "#d44a3a" }, { "color": "rgba(237, 129, 40, 0.89)", @@ -543,13 +542,13 @@ "y": 1 }, "id": 45, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -557,9 +556,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "sum(pulsar_storage_size{job=~\"broker\"}) by (cluster)", @@ -597,8 +598,7 @@ "mode": "absolute", "steps": [ { - "color": "#d44a3a", - "value": null + "color": "#d44a3a" }, { "color": "rgba(237, 129, 40, 0.89)", @@ -621,13 +621,13 @@ "y": 1 }, "id": 46, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -635,9 +635,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "sum(pulsar_msg_backlog{job=~\"broker\"}) by (cluster)", @@ -677,8 +679,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -697,9 +698,10 @@ "y": 3 }, "id": 26, - "links": [], "maxDataPoints": 100, "options": { + "minVizHeight": 75, + "minVizWidth": 75, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -709,9 +711,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": true + "showThresholdMarkers": true, + "sizing": "auto" }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "100 * ( 1 - \n ( sum(increase(node_cpu_seconds_total{mode=\"idle\"}[1m]))\n / \n sum(increase(node_cpu_seconds_total[1m]))\n )\n)", @@ -752,8 +755,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -772,9 +774,10 @@ "y": 3 }, "id": 24, - "links": [], "maxDataPoints": 100, "options": { + "minVizHeight": 75, + "minVizWidth": 75, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -784,9 +787,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": true + "showThresholdMarkers": true, + "sizing": "auto" }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "sum(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / sum(node_memory_MemTotal_bytes) * 100", @@ -827,8 +831,7 @@ "mode": "absolute", "steps": [ { - "color": "#d44a3a", - "value": null + "color": "#d44a3a" }, { "color": "rgba(237, 129, 40, 0.89)", @@ -851,9 +854,10 @@ "y": 3 }, "id": 38, - "links": [], "maxDataPoints": 100, "options": { + "minVizHeight": 75, + "minVizWidth": 75, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -863,9 +867,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": false + "showThresholdMarkers": false, + "sizing": "auto" }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "100 * count(up{job=\"zookeeper\"} == 1) / count(up{job=\"zookeeper\"})", @@ -905,8 +910,7 @@ "mode": "absolute", "steps": [ { - "color": "#d44a3a", - "value": null + "color": "#d44a3a" }, { "color": "rgba(237, 129, 40, 0.89)", @@ -929,9 +933,10 @@ "y": 3 }, "id": 35, - "links": [], "maxDataPoints": 100, "options": { + "minVizHeight": 75, + "minVizWidth": 75, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -941,9 +946,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": false + "showThresholdMarkers": false, + "sizing": "auto" }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "100 * count(up{job=\"bookkeeper\"} == 1) / count(up{job=\"bookkeeper\"})", @@ -983,8 +989,7 @@ "mode": "absolute", "steps": [ { - "color": "#d44a3a", - "value": null + "color": "#d44a3a" }, { "color": "rgba(237, 129, 40, 0.89)", @@ -1007,9 +1012,10 @@ "y": 3 }, "id": 31, - "links": [], "maxDataPoints": 100, "options": { + "minVizHeight": 75, + "minVizWidth": 75, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -1019,9 +1025,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": false + "showThresholdMarkers": false, + "sizing": "auto" }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "100 * count(up{job=\"broker\"} == 1) / count(up{job=\"broker\"})", @@ -1061,8 +1068,7 @@ "mode": "absolute", "steps": [ { - "color": "#d44a3a", - "value": null + "color": "#d44a3a" }, { "color": "rgba(237, 129, 40, 0.89)", @@ -1085,9 +1091,10 @@ "y": 3 }, "id": 36, - "links": [], "maxDataPoints": 100, "options": { + "minVizHeight": 75, + "minVizWidth": 75, "orientation": "horizontal", "reduceOptions": { "calcs": [ @@ -1097,9 +1104,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": false + "showThresholdMarkers": false, + "sizing": "auto" }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "100 * count(up{job=\"proxy\"} == 1) / count(up{job=\"proxy\"})", @@ -1114,10 +1122,6 @@ }, { "collapsed": false, - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, "gridPos": { "h": 1, "w": 24, @@ -1140,9 +1144,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -1151,6 +1159,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -1174,8 +1183,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1194,19 +1202,20 @@ "y": 8 }, "id": 5, - "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "none" } }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1250,9 +1259,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -1261,6 +1274,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -1284,8 +1298,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1304,19 +1317,20 @@ "y": 8 }, "id": 6, - "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "none" } }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1388,7 +1402,9 @@ }, "custom": { "align": "auto", - "displayMode": "auto", + "cellOptions": { + "type": "auto" + }, "filterable": false, "inspect": false }, @@ -1397,8 +1413,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1454,8 +1469,7 @@ "mode": "absolute", "steps": [ { - "color": "rgba(245, 54, 54, 0.9)", - "value": null + "color": "rgba(245, 54, 54, 0.9)" }, { "color": "rgba(237, 129, 40, 0.89)" @@ -1509,11 +1523,11 @@ "x": 16, "y": 8 }, - "hideTimeOverride": false, "id": 4, - "links": [], "options": { + "cellHeight": "sm", "footer": { + "countRows": false, "fields": "", "reducer": [ "sum" @@ -1523,7 +1537,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1574,9 +1588,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -1585,6 +1603,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -1608,8 +1627,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1628,19 +1646,20 @@ "y": 14 }, "id": 12, - "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "none" } }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1674,55 +1693,89 @@ "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 14 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1779,37 +1832,8 @@ "refId": "D" } ], - "thresholds": [], - "timeRegions": [], "title": "Throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { "datasource": { @@ -1822,9 +1846,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -1833,6 +1861,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -1856,8 +1885,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -1876,19 +1904,20 @@ "y": 20 }, "id": 47, - "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "none" } }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1922,55 +1951,89 @@ "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 20 }, - "hiddenSeries": false, "id": 49, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -2000,37 +2063,8 @@ "refId": "B" } ], - "thresholds": [], - "timeRegions": [], "title": "Producers Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { "datasource": { @@ -2044,7 +2078,9 @@ }, "custom": { "align": "auto", - "displayMode": "auto", + "cellOptions": { + "type": "auto" + }, "inspect": false }, "mappings": [], @@ -2052,8 +2088,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -2128,8 +2163,7 @@ "mode": "absolute", "steps": [ { - "color": "rgba(245, 54, 54, 0.9)", - "value": null + "color": "rgba(245, 54, 54, 0.9)" }, { "color": "rgba(237, 129, 40, 0.89)" @@ -2183,11 +2217,11 @@ "x": 16, "y": 20 }, - "hideTimeOverride": false, "id": 48, - "links": [], "options": { + "cellHeight": "sm", "footer": { + "countRows": false, "fields": "", "reducer": [ "sum" @@ -2197,7 +2231,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -2245,9 +2279,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -2256,6 +2294,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -2279,8 +2318,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -2299,19 +2337,20 @@ "y": 26 }, "id": 50, - "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "none" } }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -2355,9 +2394,13 @@ "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -2366,6 +2409,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -2389,8 +2433,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -2409,19 +2452,20 @@ "y": 26 }, "id": 51, - "links": [], "options": { "legend": { "calcs": [], "displayMode": "list", - "placement": "bottom" + "placement": "bottom", + "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "none" } }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -2455,55 +2499,89 @@ "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 7, "x": 0, "y": 32 }, - "hiddenSeries": false, "id": 53, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -2565,88 +2643,93 @@ "refId": "D" } ], - "thresholds": [], - "timeRegions": [], "title": "Messages I/O (1d)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 6, "x": 7, "y": 32 }, - "hiddenSeries": false, "id": 54, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -2708,37 +2791,8 @@ "refId": "C" } ], - "thresholds": [], - "timeRegions": [], "title": "Bytes I/O (1d)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { "datasource": { @@ -2784,13 +2838,13 @@ "y": 32 }, "id": 61, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", "graphMode": "none", "justifyMode": "auto", "orientation": "horizontal", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -2798,9 +2852,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "expr": "sum(increase(pulsar_in_bytes_total[1d]))/sum(increase(pulsar_in_messages_total[1d]))", @@ -2824,7 +2880,9 @@ }, "custom": { "align": "auto", - "displayMode": "auto", + "cellOptions": { + "type": "auto" + }, "inspect": false }, "mappings": [], @@ -2949,11 +3007,11 @@ "x": 16, "y": 32 }, - "hideTimeOverride": false, "id": 52, - "links": [], "options": { + "cellHeight": "sm", "footer": { + "countRows": false, "fields": "", "reducer": [ "sum" @@ -2963,7 +3021,7 @@ "showHeader": true, "sortBy": [] }, - "pluginVersion": "8.5.0", + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -3051,7 +3109,6 @@ "y": 35 }, "id": 56, - "links": [], "maxDataPoints": 100, "options": { "colorMode": "none", @@ -3084,10 +3141,6 @@ "type": "stat" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -3098,40 +3151,17 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 0, "y": 38 }, - "hiddenSeries": false, "id": 58, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "8.5.0", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { "datasource": { @@ -3159,43 +3189,10 @@ "refId": "B" } ], - "thresholds": [], - "timeRegions": [], "title": "Offloaded Size Total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:489", - "format": "decbytes", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:490", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -3206,40 +3203,17 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 8, "x": 8, "y": 38 }, - "hiddenSeries": false, "id": 60, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "8.5.0", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { "datasource": { @@ -3267,37 +3241,8 @@ "refId": "B" } ], - "thresholds": [], - "timeRegions": [], "title": "Redelivery Rate (msg/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:489", - "format": "decbytes", - "logBase": 1, - "show": true - }, - { - "$$hashKey": "object:490", - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { "datasource": { @@ -3311,7 +3256,9 @@ }, "custom": { "align": "auto", - "displayMode": "auto", + "cellOptions": { + "type": "auto" + }, "inspect": false }, "mappings": [], @@ -3436,9 +3383,7 @@ "x": 16, "y": 44 }, - "hideTimeOverride": false, "id": 59, - "links": [], "options": { "footer": { "fields": "", @@ -3490,10 +3435,6 @@ }, { "collapsed": true, - "datasource": { - "type": "prometheus", - "uid": "prometheus" - }, "gridPos": { "h": 1, "w": 24, @@ -3503,15 +3444,14 @@ "id": 42, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, - "fill": 1, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 10, "w": 12, @@ -3519,28 +3459,7 @@ "y": 21 }, "id": 1, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "expr": "100 * (1 - (sum(increase(node_cpu_seconds_total{mode=\"idle\"}[1m])) by (instance)\n/ \nsum(increase(node_cpu_seconds_total[1m])) by (instance)))", @@ -3550,48 +3469,18 @@ "refId": "B" } ], - "thresholds": [], "title": "Node CPU usage", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "label": "", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, - "fill": 1, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 10, "w": 12, @@ -3599,27 +3488,7 @@ "y": 21 }, "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "options": {}, "targets": [ { "expr": "(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100 ", @@ -3629,54 +3498,23 @@ "refId": "A" } ], - "thresholds": [], "title": "Node Memory Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" } ], "title": "Nodes", "type": "row" } ], - "refresh": false, - "schemaVersion": 36, - "style": "dark", + "preload": false, + "refresh": "", + "schemaVersion": 41, "tags": [], "templating": { "list": [ { "current": { - "selected": true, - "text": [ - "All" - ], + "text": "All", "value": [ "$__all" ] @@ -3686,7 +3524,6 @@ "uid": "prometheus" }, "definition": "label_values(pulsar_msg_backlog, kubernetes_pod_name)", - "hide": 0, "includeAll": true, "multi": true, "name": "broker", @@ -3697,8 +3534,6 @@ }, "refresh": 1, "regex": "", - "skipUrlSync": false, - "sort": 0, "type": "query" } ] @@ -3707,34 +3542,9 @@ "from": "now-3h", "to": "now" }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, + "timepicker": {}, "timezone": "", "title": "Pulsar / Overview By Broker", "uid": "JjhNVoMVk", - "version": 2, - "weekStart": "" -} \ No newline at end of file + "version": 1 +} diff --git a/helm/kaap-stack/grafana-dashboards/overview.json b/helm/kaap-stack/grafana-dashboards/overview.json index ab078b08..d9aee180 100644 --- a/helm/kaap-stack/grafana-dashboards/overview.json +++ b/helm/kaap-stack/grafana-dashboards/overview.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -14,13 +17,13 @@ }, "description": "Overview of Pulsar Cluster", "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, + "id": 17, "links": [], "panels": [ { "collapsed": false, - "datasource": null, "gridPos": { "h": 1, "w": 24, @@ -33,29 +36,39 @@ "type": "row" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { "h": 2, "w": 3, @@ -63,42 +76,31 @@ "y": 1 }, "id": 27, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": " Cores", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "count(node_cpu_seconds_total{mode=\"system\"})", "format": "time_series", "instant": true, @@ -107,43 +109,43 @@ "refId": "A" } ], - "thresholds": "", "title": "CPU", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "max" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" }, "overrides": [] }, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { "h": 2, "w": 3, @@ -151,42 +153,31 @@ "y": 1 }, "id": 25, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "max" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(node_memory_MemTotal_bytes)", "format": "time_series", "instant": true, @@ -195,43 +186,43 @@ "refId": "A" } ], - "thresholds": "", "title": "Memory", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "max" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#7eb26d", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": null, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 2, "w": 3, @@ -239,42 +230,31 @@ "y": 1 }, "id": 28, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "count(count(up{job=\"zookeeper\"}) by (instance))", "format": "time_series", "intervalFactor": 2, @@ -282,43 +262,43 @@ "refId": "A" } ], - "thresholds": "", "title": "Zookeeper", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#7eb26d", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": null, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 2, "w": 3, @@ -326,42 +306,31 @@ "y": 1 }, "id": 15, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "count(count(up{job=\"bookkeeper\"}) by (instance))", "format": "time_series", "intervalFactor": 2, @@ -369,43 +338,43 @@ "refId": "A" } ], - "thresholds": "", "title": "Bookies", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { "h": 2, "w": 3, @@ -413,42 +382,31 @@ "y": 1 }, "id": 32, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "count(count(up{job=\"broker\"}) by (instance))", "format": "time_series", "instant": true, @@ -457,43 +415,43 @@ "refId": "A" } ], - "thresholds": "", "title": "Brokers", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#7eb26d", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": null, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 2, "w": 3, @@ -501,42 +459,31 @@ "y": 1 }, "id": 29, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "count(count(up{job=\"proxy\"}) by (instance))", "format": "time_series", "intervalFactor": 2, @@ -544,43 +491,47 @@ "refId": "A" } ], - "thresholds": "", "title": "Proxies", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#7eb26d" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "#7eb26d", + "value": 90 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 6, "w": 3, @@ -588,42 +539,31 @@ "y": 1 }, "id": 45, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_size{job=~\"broker\"}) by (cluster)", "format": "time_series", "intervalFactor": 2, @@ -631,43 +571,47 @@ "refId": "A" } ], - "thresholds": "80,90", "title": "Storage", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#7eb26d" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "#7eb26d", + "value": 90 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 6, "w": 3, @@ -675,42 +619,31 @@ "y": 1 }, "id": 46, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_msg_backlog{job=~\"broker\"}) by (cluster)", "format": "time_series", "intervalFactor": 2, @@ -718,43 +651,45 @@ "refId": "A" } ], - "thresholds": "80,90", "title": "Backlog", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" }, "overrides": [] }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { "h": 4, "w": 3, @@ -762,42 +697,31 @@ "y": 3 }, "id": 26, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 * ( 1 - \n ( sum(increase(node_cpu_seconds_total{mode=\"idle\"}[1m]))\n / \n sum(increase(node_cpu_seconds_total[1m]))\n )\n)", "format": "time_series", "instant": true, @@ -806,43 +730,45 @@ "refId": "A" } ], - "thresholds": "", "title": "CPU Usage", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" }, "overrides": [] }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { "h": 4, "w": 3, @@ -850,42 +776,31 @@ "y": 3 }, "id": 24, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / sum(node_memory_MemTotal_bytes) * 100", "format": "time_series", "instant": true, @@ -894,43 +809,49 @@ "refId": "A" } ], - "thresholds": "", "title": "Memory Usage", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#7eb26d" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "#7eb26d", + "value": 90 + } + ] + }, + "unit": "percent" }, "overrides": [] }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 4, "w": 3, @@ -938,42 +859,31 @@ "y": 3 }, "id": 38, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 * count(up{job=\"zookeeper\"} == 1) / count(up{job=\"zookeeper\"})", "format": "time_series", "intervalFactor": 2, @@ -981,43 +891,49 @@ "refId": "A" } ], - "thresholds": "80,90", "title": "Zookeeper Up", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#7eb26d" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "#7eb26d", + "value": 90 + } + ] + }, + "unit": "percent" }, "overrides": [] }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 4, "w": 3, @@ -1025,42 +941,31 @@ "y": 3 }, "id": 35, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 * count(up{job=\"bookkeeper\"} == 1) / count(up{job=\"bookkeeper\"})", "format": "time_series", "intervalFactor": 2, @@ -1068,43 +973,49 @@ "refId": "A" } ], - "thresholds": "80,90", "title": "Bookies Up", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#7eb26d" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "#7eb26d", + "value": 90 + } + ] + }, + "unit": "percent" }, "overrides": [] }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 4, "w": 3, @@ -1112,42 +1023,31 @@ "y": 3 }, "id": 31, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 * count(up{job=\"broker\"} == 1) / count(up{job=\"broker\"})", "format": "time_series", "intervalFactor": 2, @@ -1155,43 +1055,49 @@ "refId": "A" } ], - "thresholds": "80,90", "title": "Brokers Up", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#7eb26d" - ], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#d44a3a" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": 80 + }, + { + "color": "#7eb26d", + "value": 90 + } + ] + }, + "unit": "percent" }, "overrides": [] }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": false - }, "gridPos": { "h": 4, "w": 3, @@ -1199,42 +1105,31 @@ "y": 3 }, "id": 36, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "tableColumn": "", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 * count(up{job=\"proxy\"} == 1) / count(up{job=\"proxy\"})", "format": "time_series", "intervalFactor": 2, @@ -1242,22 +1137,11 @@ "refId": "A" } ], - "thresholds": "80,90", "title": "Proxies Up", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { "collapsed": false, - "datasource": null, "gridPos": { "h": 1, "w": 24, @@ -1270,157 +1154,198 @@ "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 0, "y": 8 }, - "hiddenSeries": false, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_storage_size{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", "intervalFactor": 2, "legendFormat": "{{ cluster }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Messaging Storage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "refId": "A" } ], - "yaxis": { - "align": false, - "alignLevel": null - } + "title": "Messaging Storage", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 8 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_rate_in{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -1429,6 +1354,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_rate_out{job=~\"broker\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -1437,130 +1366,146 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Message Rate (msg/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "columns": [], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} - }, - "overrides": [] + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "unit", + "value": "short" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "custom.hidden", + "value": true + }, + { + "id": "custom.align" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "topic" + }, + "properties": [ + { + "id": "displayName", + "value": "Topic name" + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "custom.align" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "displayName", + "value": "Messages" + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.align" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": null + } + ] + } + } + ] + } + ] }, - "fontSize": "100%", "gridPos": { "h": 12, "w": 8, "x": 16, "y": 8 }, - "hideTimeOverride": false, "id": 4, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 2, - "desc": true - }, - "styles": [ - { - "alias": "", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "pattern": "Time", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Topic name", - "align": "auto", - "colorMode": null, - "colors": [ - "#890f02", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "pattern": "topic", - "thresholds": [], - "type": "number", - "unit": "short" + "show": false }, - { - "alias": "Messages", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "pattern": "Value", - "thresholds": [ - "" - ], - "type": "number", - "unit": "short" - } - ], + "showHeader": true + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": " topk(10, sum(pulsar_msg_backlog{job=~\"broker\"}) by (topic))", "format": "table", "instant": true, @@ -1570,59 +1515,98 @@ } ], "title": "Top 10 topics backlog", - "transform": "table", - "type": "table-old" + "type": "table" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 0, "y": 14 }, - "hiddenSeries": false, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_msg_backlog{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -1631,99 +1615,100 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Messaging Backlog", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 14 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_throughput_in{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -1732,6 +1717,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_throughput_out{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -1740,99 +1729,100 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 0, "y": 20 }, - "hiddenSeries": false, "id": 47, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_replication_backlog{job=~\"broker.*\"}) by (remote_cluster)", "format": "time_series", "interval": "", @@ -1841,6 +1831,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_replication_backlog{job=~\"broker.*\"})", "format": "time_series", "interval": "", @@ -1849,99 +1843,100 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Replication Backlog", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 20 }, - "hiddenSeries": false, "id": 61, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_replication_throughput_in{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -1950,136 +1945,156 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_replication_throughput_out{job=~\"broker.*\"}) by (topic)) by (cluster)", "interval": "", "legendFormat": "Out", "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Replication Throughput", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "columns": [], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} - }, - "overrides": [] + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "unit", + "value": "short" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "custom.hidden", + "value": true + }, + { + "id": "custom.align" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "topic" + }, + "properties": [ + { + "id": "displayName", + "value": "Topic name" + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "custom.align" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "displayName", + "value": "Messages" + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.align" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": null + } + ] + } + } + ] + } + ] }, - "fontSize": "100%", "gridPos": { "h": 12, "w": 8, "x": 16, "y": 20 }, - "hideTimeOverride": false, "id": 48, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 2, - "desc": true - }, - "styles": [ - { - "alias": "", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "pattern": "Time", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Topic name", - "align": "auto", - "colorMode": null, - "colors": [ - "#890f02", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "pattern": "topic", - "thresholds": [], - "type": "number", - "unit": "short" + "show": false }, - { - "alias": "Messages", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "pattern": "Value", - "thresholds": [ - "" - ], - "type": "number", - "unit": "short" - } - ], + "showHeader": true + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": " topk(10, sum(pulsar_replication_backlog{job=~\"broker\"}) by (topic))", "format": "table", "instant": true, @@ -2090,60 +2105,99 @@ } ], "title": "Top 10 Replication Backlog", - "transform": "table", - "type": "table-old" + "type": "table" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 0, "y": 26 }, - "hiddenSeries": false, "id": 60, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_replication_rate_in{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -2152,105 +2206,110 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_replication_rate_out{job=~\"broker.*\"}) by (topic)) by (cluster)", "interval": "", "legendFormat": "Out", "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Replication Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 26 }, - "hiddenSeries": false, "id": 58, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_subscription_unacked_messages{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -2259,99 +2318,100 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Subscription Unacked Messages", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 0, "y": 32 }, - "hiddenSeries": false, "id": 50, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_consumers_count{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -2360,98 +2420,99 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Consumers Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 32 }, - "hiddenSeries": false, "id": 49, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_producers_count{job=~\"broker.*\"}) by (topic)) by (cluster)", "format": "time_series", "interval": "", @@ -2460,130 +2521,146 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Producers Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "columns": [], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} - }, - "overrides": [] + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Time" + }, + "properties": [ + { + "id": "unit", + "value": "short" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "custom.hidden", + "value": true + }, + { + "id": "custom.align" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "topic" + }, + "properties": [ + { + "id": "displayName", + "value": "Topic name" + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "custom.align" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Value" + }, + "properties": [ + { + "id": "displayName", + "value": "Messages" + }, + { + "id": "unit", + "value": "short" + }, + { + "id": "custom.align" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "rgba(245, 54, 54, 0.9)" + }, + { + "color": "rgba(237, 129, 40, 0.89)", + "value": null + } + ] + } + } + ] + } + ] }, - "fontSize": "100%", "gridPos": { "h": 12, "w": 8, "x": 16, "y": 32 }, - "hideTimeOverride": false, "id": 59, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 2, - "desc": true - }, - "styles": [ - { - "alias": "", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "pattern": "Time", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Topic name", - "align": "auto", - "colorMode": null, - "colors": [ - "#890f02", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "fields": "", + "reducer": [ + "sum" ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "pattern": "topic", - "thresholds": [], - "type": "number", - "unit": "short" + "show": false }, - { - "alias": "Messages", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "pattern": "Value", - "thresholds": [ - "" - ], - "type": "number", - "unit": "short" - } - ], + "showHeader": true + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": " topk(10, sum(pulsar_subscription_unacked_messages{job=~\"broker\"}) by (topic))", "format": "table", "instant": true, @@ -2593,15 +2670,13 @@ } ], "title": "Top 10 Topics Unacked", - "transform": "table", - "type": "table-old" + "type": "table" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {}, @@ -2609,43 +2684,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 7, "x": 0, "y": 38 }, - "hiddenSeries": false, "id": 53, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(increase(pulsar_in_messages_total[1d])) by (cluster)", "format": "time_series", "interval": "", @@ -2654,54 +2709,14 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Messages In (1d)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { @@ -2710,43 +2725,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 8, "x": 8, "y": 38 }, - "hiddenSeries": false, "id": 51, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(avg(pulsar_subscriptions_count{job=~\"broker.*\"}) by (broker)) by (cluster)", "format": "time_series", "interval": "", @@ -2755,54 +2750,14 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Subscriptions Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {}, @@ -2810,43 +2765,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 7, "x": 0, "y": 44 }, - "hiddenSeries": false, "id": 57, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(increase(pulsar_storage_offloaded_size[1d])) by (cluster)", "format": "time_series", "interval": "", @@ -2855,56 +2790,14 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Offloaded Size (1d)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:737", - "decimals": null, - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "$$hashKey": "object:738", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {}, @@ -2912,43 +2805,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 6, "w": 6, "x": 7, "y": 44 }, - "hiddenSeries": false, "id": 54, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(increase(pulsar_in_bytes_total[1d])) by (cluster)", "format": "time_series", "interval": "", @@ -2957,72 +2830,20 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bytes In (1d)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { "h": 6, "w": 3, @@ -3030,148 +2851,49 @@ "y": 44 }, "id": 56, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, + "options": {}, "pluginVersion": "6.7.1", - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false, - "ymax": null, - "ymin": null - }, - "tableColumn": "", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(increase(pulsar_in_bytes_total[1d]))/sum(increase(pulsar_in_messages_total[1d]))", "interval": "", "legendFormat": "", "refId": "A" } ], - "thresholds": "", - "timeFrom": null, - "timeShift": null, "title": "Avg In Msg (1d)", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" + "type": "stat" }, { - "columns": [], - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fontSize": "100%", "gridPos": { "h": 12, "w": 8, "x": 16, "y": 44 }, - "hideTimeOverride": false, "id": 52, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 2, - "desc": true - }, - "styles": [ - { - "alias": "", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "pattern": "Time", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Topic name", - "align": "auto", - "colorMode": null, - "colors": [ - "#890f02", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "pattern": "topic", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "Bytes", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "pattern": "Value", - "thresholds": [ - "" - ], - "type": "number", - "unit": "decbytes" - } - ], + "options": {}, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": " topk(10, sum(pulsar_storage_size{job=~\"broker\"}) by (topic))", "format": "table", "instant": true, @@ -3182,12 +2904,10 @@ } ], "title": "Top 10 Topics Storage", - "transform": "table", - "type": "table-old" + "type": "table" }, { "collapsed": false, - "datasource": null, "gridPos": { "h": 1, "w": 24, @@ -3200,55 +2920,33 @@ "type": "row" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 10, "w": 12, "x": 0, "y": 57 }, - "hiddenSeries": false, "id": 1, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "100 * (1 - (sum(increase(node_cpu_seconds_total{mode=\"idle\"}[1m])) by (instance)\n/ \nsum(increase(node_cpu_seconds_total[1m])) by (instance)))", "format": "time_series", "intervalFactor": 1, @@ -3256,97 +2954,37 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Node CPU usage", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "percent", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 10, "w": 12, "x": 12, "y": 57 }, - "hiddenSeries": false, "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100 ", "format": "time_series", "intervalFactor": 2, @@ -3354,52 +2992,13 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Node Memory Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "percent", - "label": null, - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 26, - "style": "dark", + "schemaVersion": 41, "tags": [ "pulsar" ], @@ -3410,31 +3009,7 @@ "from": "now-12h", "to": "now" }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, + "timepicker": {}, "timezone": "", "title": "Pulsar / Overview", "uid": "XlS0CN-mk", diff --git a/helm/kaap-stack/grafana-dashboards/proxy.json b/helm/kaap-stack/grafana-dashboards/proxy.json index 28092f55..80010173 100644 --- a/helm/kaap-stack/grafana-dashboards/proxy.json +++ b/helm/kaap-stack/grafana-dashboards/proxy.json @@ -1,39 +1,12 @@ { - "__inputs": [ - { - "name": "DS_TEST-CLUSTER", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "5.3.2" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "5.0.0" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "5.0.0" - } - ], "annotations": { "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -44,20 +17,72 @@ }, "description": "Proxy Metrics", "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": null, - "iteration": 1543909108957, + "id": 19, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -65,29 +90,26 @@ "y": 0 }, "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_proxy_active_connections{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}) by (instance)", "format": "time_series", "interval": "", @@ -97,54 +119,70 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Active Connections", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -152,29 +190,26 @@ "y": 0 }, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_new_connections{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[30s])) by (instance)", "format": "time_series", "interval": "", @@ -184,54 +219,70 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "New connections (conn / s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -239,29 +290,26 @@ "y": 0 }, "id": 27, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_rejected_connections{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[30s])) by (instance)", "format": "time_series", "interval": "", @@ -271,53 +319,69 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Rejected connections (conn / s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -325,29 +389,26 @@ "y": 7 }, "id": 24, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_binary_ops{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[1m])) by (instance)", "format": "time_series", "interval": "", @@ -356,53 +417,69 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Operations per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -410,29 +487,26 @@ "y": 7 }, "id": 25, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_binary_ops{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[1m])) by (instance)", "format": "time_series", "interval": "", @@ -441,53 +515,69 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Traffic - bytes per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fill": 1, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -495,29 +585,26 @@ "y": 7 }, "id": 29, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(jetty_requests_total{cluster=~\"$cluster\", instance=~\"$instance\"}[1m])) by (instance)", "format": "time_series", "intervalFactor": 1, @@ -525,54 +612,70 @@ "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "HTTP reqs per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -580,29 +683,26 @@ "y": 14 }, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_lookup_requests{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[1m])) by (instance)", "format": "time_series", "interval": "", @@ -612,54 +712,70 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Topic lookups per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -667,29 +783,26 @@ "y": 14 }, "id": 22, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_partitions_metadata_requests{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[1m])) by (instance)", "format": "time_series", "interval": "", @@ -699,54 +812,70 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "GetPartitionsMetadata per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 8, @@ -754,29 +883,26 @@ "y": 14 }, "id": 23, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_get_topics_of_namespace_requests{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[1m])) by (instance)", "format": "time_series", "interval": "", @@ -786,54 +912,70 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "GetNamespaceTopics per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 8, @@ -841,29 +983,26 @@ "y": 21 }, "id": 21, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_rejected_lookup_requests{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[1m])) by (instance)", "format": "time_series", "interval": "", @@ -873,54 +1012,70 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Lookups rejected per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 8, @@ -928,29 +1083,26 @@ "y": 21 }, "id": 26, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(rate(pulsar_proxy_rejected_partitions_metadata_requests{cluster=~\"$cluster\", job=~\"proxy\", instance=~\"$instance\"}[1m])) by (instance)", "format": "time_series", "interval": "", @@ -960,54 +1112,70 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "Partitions requests rejected per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "fill": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 6, "w": 8, @@ -1015,29 +1183,26 @@ "y": 21 }, "id": 28, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(\n rate(\n pulsar_proxy_rejected_get_topics_of_namespace_requests{\n cluster=~\"$cluster\", job=~\"proxy\", \n instance=~\"$instance\"}[1m]\n )\n ) \nby (instance)", "format": "time_series", "interval": "", @@ -1047,81 +1212,44 @@ "step": 2 } ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, "title": "GetNamespaceTopics requests rejected per sec", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 16, - "style": "dark", + "schemaVersion": 41, "tags": [ "pulsar" ], "templating": { "list": [ { - "allValue": null, - "current": {}, + "current": { + "text": "All", + "value": "$__all" + }, "datasource": "Prometheus", - "hide": 0, "includeAll": true, "label": "Cluster", - "multi": false, "name": "cluster", "options": [], "query": "pulsar_proxy_active_connections{cluster=~\".+\", job=~\"proxy\"}", "refresh": 2, "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, - "current": {}, + "current": { + "text": [ + "All" + ], + "value": [ + "$__all" + ] + }, "datasource": "Prometheus", - "hide": 0, "includeAll": true, "label": "Proxy", "multi": true, @@ -1130,13 +1258,8 @@ "query": "pulsar_proxy_active_connections{instance=~\".+\", job=~\"proxy\"}", "refresh": 2, "regex": "/.*[^_]instance=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -1144,33 +1267,9 @@ "from": "now-1h", "to": "now" }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, + "timepicker": {}, "timezone": "browser", "title": "Pulsar / Proxy", "uid": "IMCFzlbiz", - "version": 4 + "version": 1 } diff --git a/helm/kaap-stack/grafana-dashboards/pulsarheartbeat.json b/helm/kaap-stack/grafana-dashboards/pulsarheartbeat.json index ba792c6b..9f95e19d 100644 --- a/helm/kaap-stack/grafana-dashboards/pulsarheartbeat.json +++ b/helm/kaap-stack/grafana-dashboards/pulsarheartbeat.json @@ -1,703 +1,722 @@ { - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 31, - "links": [], - "panels": [ + "annotations": { + "list": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} + "builtIn": 1, + "datasource": { + "type": "datasource", + "uid": "grafana" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 20, + "links": [], + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 0 + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" }, - "hiddenSeries": false, - "id": 2, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 2, + "options": { + "dataLinks": [], "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_pubsub_latency_ms", - "legendFormat": "{{ device }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "End-to-End Topic Pubsub Latency", "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null + "expr": "pulsar_pubsub_latency_ms", + "legendFormat": "{{ device }}", + "refId": "A" } + ], + "title": "End-to-End Topic Pubsub Latency", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, - "hiddenSeries": false, - "id": 23, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 23, + "options": { + "dataLinks": [], "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_k8s_bookkeeper_offline_counter", - "interval": "", - "legendFormat": "", - "refId": "A" - }, - { - "expr": "pulsar_k8s_broker_offline_counter", - "interval": "", - "legendFormat": "", - "refId": "B" + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "expr": "pulsar_k8s_zookeeper_offline_counter", - "interval": "", - "legendFormat": "", - "refId": "C" + "expr": "pulsar_k8s_bookkeeper_offline_counter", + "interval": "", + "legendFormat": "", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "expr": "pulsar_k8s_proxy_offline_counter", - "interval": "", - "legendFormat": "", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Instances offline counter", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" + "expr": "pulsar_k8s_broker_offline_counter", + "interval": "", + "legendFormat": "", + "refId": "B" }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "expr": "pulsar_k8s_zookeeper_offline_counter", + "interval": "", + "legendFormat": "", + "refId": "C" }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null + "expr": "pulsar_k8s_proxy_offline_counter", + "interval": "", + "legendFormat": "", + "refId": "D" } + ], + "title": "Instances offline counter", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, - "hiddenSeries": false, - "id": 8, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 8 + }, + "id": 8, + "options": { + "dataLinks": [], "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_tenant_size ", - "legendFormat": "{{ device }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Tenants", "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null + "expr": "pulsar_tenant_size ", + "legendFormat": "{{ device }}", + "refId": "A" } + ], + "title": "Tenants", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] }, - "overrides": [] + "unit": "none" }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 0, - "y": 9 + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 0, + "y": 9 + }, + "id": 18, + "maxDataPoints": 100, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false }, - "id": 18, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "pluginVersion": "6.5.2", - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false, - "ymax": null, - "ymin": null - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(pulsar_tenant_size)", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "timeFrom": null, - "timeShift": null, - "title": "Tenants", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" + "expr": "max(pulsar_tenant_size)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Tenants", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "cacheTimeout": null, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {}, - "mappings": [ + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "match": "null", + "result": { + "text": "N/A" + } + }, + "type": "special" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, { - "id": 0, - "op": "=", - "text": "N/A", - "type": 1, - "value": "null" + "color": "red", + "value": 80 } - ], - "nullValueMode": "connected", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "none" + ] }, - "overrides": [] + "unit": "none" }, - "gridPos": { - "h": 3, - "w": 4, - "x": 4, - "y": 9 + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 4, + "x": 4, + "y": 9 + }, + "id": 12, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "fieldOptions": { + "calcs": [ + "mean" + ] + }, + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false }, - "id": 12, - "interval": null, - "links": [], - "maxDataPoints": 100, - "options": { - "colorMode": "value", - "fieldOptions": { - "calcs": [ - "mean" - ] + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - "graphMode": "none", - "justifyMode": "auto", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - } - }, - "pluginVersion": "7.0.3", - "targets": [ - { - "expr": "sum(pulsar_monitor_counter)/7200", - "format": "heatmap", - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Uptime hours", - "type": "stat" + "expr": "sum(pulsar_monitor_counter)/7200", + "format": "heatmap", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Uptime hours", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 12 + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" }, - "hiddenSeries": false, - "id": 21, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 12 + }, + "id": 21, + "options": { + "dataLinks": [], "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_websocket_latency_ms", - "interval": "", - "legendFormat": "{{ device }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "WebSockets Latency", "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null + "expr": "pulsar_websocket_latency_ms", + "interval": "", + "legendFormat": "{{ device }}", + "refId": "A" } + ], + "title": "WebSockets Latency", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 16 + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" }, - "hiddenSeries": false, - "id": 4, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 16 + }, + "id": 4, + "options": { + "dataLinks": [], "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pulsar_func_topic_latency_ms", - "interval": "", - "legendFormat": "{{ device }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "End-to-End Function Latency", "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null + "expr": "pulsar_func_topic_latency_ms", + "interval": "", + "legendFormat": "{{ device }}", + "refId": "A" } - } - ], - "refresh": false, - "schemaVersion": 25, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Pulsar / Pulsar Heartbeat", - "uid": "j55zWy2Mk", - "version": 5 - } \ No newline at end of file + ], + "title": "End-to-End Function Latency", + "type": "timeseries" + } + ], + "preload": false, + "refresh": "", + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "Pulsar / Pulsar Heartbeat", + "uid": "j55zWy2Mk", + "version": 1 +} diff --git a/helm/kaap-stack/grafana-dashboards/s4k.json b/helm/kaap-stack/grafana-dashboards/s4k.json index f0a9c984..b33cea21 100644 --- a/helm/kaap-stack/grafana-dashboards/s4k.json +++ b/helm/kaap-stack/grafana-dashboards/s4k.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,57 +16,99 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 38, + "id": 21, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(rate(kop_server_BYTES_IN[5m])) by (tenant)", "interval": "", @@ -71,93 +116,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "In bytes rate by tenant", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(rate(kop_server_BYTES_OUT[5m])) by (tenant)", "interval": "", @@ -165,93 +214,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Out bytes rate by tenant", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 8 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(rate(kop_server_MESSAGE_IN[5m])) by (tenant)", "interval": "", @@ -259,93 +312,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "In message rate by tenant", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(rate(kop_server_MESSAGE_OUT[5m])) by (tenant)", "interval": "", @@ -353,93 +410,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Out message rate by tenant", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 }, - "hiddenSeries": false, "id": 25, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_PRODUCE_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"false\", quantile=\"0.5\"}[1m])", "interval": "", @@ -447,6 +508,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_PRODUCE_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"false\", quantile=\"0.75\"}[1m])", "hide": false, @@ -455,6 +520,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_PRODUCE_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"false\", quantile=\"0.95\"}[1m])", "hide": false, @@ -463,6 +532,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_PRODUCE_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"false\", quantile=\"0.99\"}[1m])", "hide": false, @@ -471,93 +544,97 @@ "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Failed produce message conversions time nanos", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 17 }, - "hiddenSeries": false, "id": 24, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_PRODUCE_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"true\", quantile=\"0.5\"}[1m])", "interval": "", @@ -565,6 +642,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_PRODUCE_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"true\", quantile=\"0.75\"}[1m])", "hide": false, @@ -573,6 +654,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_PRODUCE_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"true\", quantile=\"0.95\"}[1m])", "hide": false, @@ -581,6 +666,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_PRODUCE_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"true\", quantile=\"0.99\"}[1m])", "hide": false, @@ -589,93 +678,97 @@ "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Produce message conversions time nanos", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 24 }, - "hiddenSeries": false, "id": 26, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_CONSUME_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"false\", quantile=\"0.5\"}[1m])", "interval": "", @@ -683,6 +776,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_CONSUME_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"false\", quantile=\"0.75\"}[1m])", "hide": false, @@ -691,6 +788,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_CONSUME_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"false\", quantile=\"0.95\"}[1m])", "hide": false, @@ -699,6 +800,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_CONSUME_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"false\", quantile=\"0.99\"}[1m])", "hide": false, @@ -707,93 +812,97 @@ "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Failed consume message conversions time nanos", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 25 }, - "hiddenSeries": false, "id": 27, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_CONSUME_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"true\", quantile=\"0.5\"}[1m])", "interval": "", @@ -801,6 +910,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_CONSUME_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"true\", quantile=\"0.75\"}[1m])", "hide": false, @@ -809,6 +922,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_CONSUME_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"true\", quantile=\"0.95\"}[1m])", "hide": false, @@ -817,6 +934,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_CONSUME_MESSAGE_CONVERSIONS_TIME_NANOS{success=\"true\", quantile=\"0.99\"}[1m])", "hide": false, @@ -825,93 +946,97 @@ "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Consume message conversions time nanos", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 32 }, - "hiddenSeries": false, "id": 22, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_REQUEST_LATENCY_count{success=\"false\"}) by (tenant)", "interval": "", @@ -919,93 +1044,35 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Failed request latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 33 }, - "hiddenSeries": false, "id": 21, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_REQUEST_LATENCY_count{success=\"true\"}) by (tenant)", "interval": "", @@ -1013,93 +1080,35 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Successful request latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 40 }, - "hiddenSeries": false, "id": 17, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_ACTIVE_CHANNEL_COUNT) by (tenant)", "interval": "", @@ -1107,91 +1116,35 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Active channels by tenant", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 41 }, - "hiddenSeries": false, "id": 19, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_REQUEST_QUEUE_SIZE) by (tenant)", "interval": "", @@ -1199,91 +1152,35 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Request queue size by tenant", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 48 }, - "hiddenSeries": false, "id": 15, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_MESSAGE_PUBLISH{quantile=\"0.5\"})", "interval": "", @@ -1291,6 +1188,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_MESSAGE_PUBLISH{quantile=\"0.75\"})", "hide": false, @@ -1299,6 +1200,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_MESSAGE_PUBLISH{quantile=\"0.95\"})", "hide": false, @@ -1307,6 +1212,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_MESSAGE_PUBLISH{quantile=\"0.99\"})", "hide": false, @@ -1315,93 +1224,35 @@ "refId": "D" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Message publish latency quantiles", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 49 }, - "hiddenSeries": false, "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_MESSAGE_READ{quantile=\"0.5\"})", "interval": "", @@ -1409,6 +1260,10 @@ "refId": "A" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_MESSAGE_READ{quantile=\"0.75\"})", "hide": false, @@ -1417,6 +1272,10 @@ "refId": "B" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_MESSAGE_READ{quantile=\"0.95\"})", "hide": false, @@ -1425,6 +1284,10 @@ "refId": "C" }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_MESSAGE_READ{quantile=\"0.99\"})", "hide": false, @@ -1433,91 +1296,35 @@ "refId": "D" } ], - "thresholds": [], - "timeRegions": [], "title": "Message consume latency quantiles", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 56 }, - "hiddenSeries": false, "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_REQUEST_QUEUE_SIZE) by (tenant)", "interval": "", @@ -1525,91 +1332,35 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Request queue size by tenant", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 57 }, - "hiddenSeries": false, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(kop_server_ACTIVE_CHANNEL_COUNT) by (tenant)", "interval": "", @@ -1617,91 +1368,35 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Active channel count by tenant", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 64 }, - "hiddenSeries": false, "id": 31, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(kop_server_KOP_EVENT_LATENCY[1m])", "interval": "", @@ -1709,91 +1404,35 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "Kop Queue latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 65 }, - "hiddenSeries": false, "id": 29, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "kop_server_KOP_EVENT_QUEUE_SIZE", "interval": "", @@ -1801,50 +1440,12 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "KOP event queue size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "schemaVersion": 27, - "style": "dark", + "preload": false, + "schemaVersion": 41, "tags": [], "templating": { "list": [] @@ -1855,7 +1456,7 @@ }, "timepicker": {}, "timezone": "", - "title": "Starlight Kafka", + "title": "Pulsar / Starlight for Kafka", "uid": "7hJIApl7z", - "version": 11 -} \ No newline at end of file + "version": 1 +} diff --git a/helm/kaap-stack/grafana-dashboards/s4r.json b/helm/kaap-stack/grafana-dashboards/s4r.json index 995cecde..3d4ff4be 100644 --- a/helm/kaap-stack/grafana-dashboards/s4r.json +++ b/helm/kaap-stack/grafana-dashboards/s4r.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,13 +16,16 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 38, + "id": 22, "links": [], "panels": [ { - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "color": { @@ -30,8 +36,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -54,6 +59,7 @@ "graphMode": "area", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -61,12 +67,18 @@ "fields": "", "values": false }, + "showPercentChange": false, "text": {}, - "textMode": "auto" + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "7.5.5", + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "pulsar_proxy_rabbitmq_active_connections", "interval": "", @@ -74,57 +86,97 @@ "refId": "A" } ], - "timeFrom": null, - "timeShift": null, "title": "Active Connections", "type": "stat" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(pulsar_proxy_rabbitmq_new_connections[60s])", "interval": "", @@ -132,91 +184,97 @@ "refId": "A" } ], - "thresholds": [], - "timeRegions": [], "title": "New connection rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 8 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(pulsar_proxy_rabbitmq_in_messages_total[60s])", "interval": "", @@ -224,93 +282,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "In message total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 8 }, - "hiddenSeries": false, "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(pulsar_proxy_rabbitmq_in_messages_total[60s])", "interval": "", @@ -318,93 +380,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Out messages total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 17 }, - "hiddenSeries": false, "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(pulsar_proxy_rabbitmq_in_bytes[60s])", "interval": "", @@ -412,93 +478,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "In bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { - "defaults": {}, + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 17 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.5.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "rate(pulsar_proxy_rabbitmq_out_bytes[60s])", "interval": "", @@ -506,50 +576,12 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Out bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], - "schemaVersion": 27, - "style": "dark", + "preload": false, + "schemaVersion": 41, "tags": [ "RabbitMQ" ], @@ -562,7 +594,7 @@ }, "timepicker": {}, "timezone": "", - "title": "Starlight RabbitMQ", + "title": "Pulsar / Starlight for RabbitMQ", "uid": "9aDp0T_nk", - "version": 4 + "version": 1 } diff --git a/helm/kaap-stack/grafana-dashboards/sockets.json b/helm/kaap-stack/grafana-dashboards/sockets.json index 31bb1b16..c581d8a7 100644 --- a/helm/kaap-stack/grafana-dashboards/sockets.json +++ b/helm/kaap-stack/grafana-dashboards/sockets.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,60 +16,100 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 13, + "id": 23, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(pulsar_producers_count{job=~\"broker\"}) by (kubernetes_pod_name)", "interval": "", @@ -74,96 +117,98 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Producers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "sum(pulsar_consumers_count{job=~\"broker\"}) by (kubernetes_pod_name)", "interval": "", @@ -171,95 +216,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Consumers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 9 }, - "hiddenSeries": false, "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "container_sockets{container=~\".*proxy\",container!~\"kube-proxy.*\"}", "interval": "", @@ -267,95 +314,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Proxy Sockets", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 9 }, - "hiddenSeries": false, "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "container_sockets{container=~\".*broker\"}", "interval": "", @@ -363,95 +412,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Broker Sockets", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 18 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "container_sockets{container=~\".*bookkeeper.*\"}", "interval": "", @@ -459,95 +510,97 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Bookkeeper Sockets", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 18 }, - "hiddenSeries": false, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "exemplar": true, "expr": "container_sockets{container=~\".*zookeeper.*\"}", "interval": "", @@ -555,51 +608,13 @@ "refId": "A" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "ZooKeeper Sockets", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], + "preload": false, "refresh": "10s", - "schemaVersion": 26, - "style": "dark", + "schemaVersion": 41, "tags": [], "templating": { "list": [] @@ -610,7 +625,7 @@ }, "timepicker": {}, "timezone": "", - "title": "Sockets by Component", + "title": "Pulsar / Sockets by Component", "uid": "BPLyrjQ7k", "version": 1 } diff --git a/helm/kaap-stack/grafana-dashboards/tenant.json b/helm/kaap-stack/grafana-dashboards/tenant.json index d555d5ed..e49f3d2e 100644 --- a/helm/kaap-stack/grafana-dashboards/tenant.json +++ b/helm/kaap-stack/grafana-dashboards/tenant.json @@ -24,62 +24,92 @@ "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, - "id": 45, - "iteration": 1657750112643, + "id": 24, "links": [], - "liveNow": false, "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg/s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 16, - "legend": { - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -95,87 +125,93 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Local publish rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg/s", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -191,88 +227,92 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Local delivery rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 7 }, - "hiddenSeries": false, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -289,42 +329,10 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Local publish throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -332,46 +340,83 @@ "description": "", "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 7 }, - "hiddenSeries": false, "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -388,89 +433,92 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Local delivery throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, - "decimals": 0, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "count", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 14 }, - "hiddenSeries": false, "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -527,89 +575,93 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Topics - Producers - Subscriptions - Consumers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "short", - "label": "count", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Messages", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 14 }, - "hiddenSeries": false, "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -626,106 +678,273 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Local backlog", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Messages", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": { - "0 - 0.5 ms": "#2F575E", - "0.5 - 1 ms": "#3F6833", - "1 - 5 ms": "#629E51", - "10 - 20 ms": "#E5A8E2", - "100 - 200 ms": "#EF843C", - "20 - 50 ms": "#65C5DB", - "200 ms - 1 s": "#EA6460", - "5 - 10 ms": "#1F78C1", - "50 - 100 ms": "#E5AC0E", - "< +Inf ms": "#BF1B00", - "< 0.5 ms": "#508642", - "> 1 s": "#BF1B00" - }, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "0 - 0.5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#2F575E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "0.5 - 1 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#3F6833", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "1 - 5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#629E51", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "10 - 20 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E5A8E2", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "100 - 200 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EF843C", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "20 - 50 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#65C5DB", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "200 ms - 1 s" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "5 - 10 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "50 - 100 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E5AC0E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "< +Inf ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BF1B00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "< 0.5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "> 1 s" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BF1B00", + "mode": "fixed" + } + } + ] + } + ] }, - "fill": 5, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 21 }, - "hiddenSeries": false, "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "< 100 ms", - "yaxis": 1 + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + }, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -867,87 +1086,92 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Storage Write Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 21 }, - "hiddenSeries": false, "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -966,86 +1190,91 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Storage Size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": true - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, - "fill": 6, - "fillGradient": 0, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 28 }, - "hiddenSeries": false, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "< 2 KB", - "yaxis": 1 + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + }, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1165,87 +1394,93 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Storage entry size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, "fieldConfig": { "defaults": { - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 28 }, - "hiddenSeries": false, "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { "datasource": { @@ -1261,43 +1496,10 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Outgoing replication rate | $cluster → any", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" @@ -1308,41 +1510,17 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 35 }, - "hiddenSeries": false, "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { "datasource": { @@ -1359,82 +1537,29 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Incoming replication rate | any → $cluster", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, "datasource": { "type": "prometheus", "uid": "prometheus" }, - "fill": 1, - "fillGradient": 0, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 35 }, - "hiddenSeries": false, "id": 15, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "8.5.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { "datasource": { @@ -1450,60 +1575,28 @@ "step": 10 } ], - "thresholds": [], - "timeRegions": [], "title": "Replication backlog | $cluster → any", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "messages", - "logBase": 1, - "min": "0", - "show": true - }, - { - "format": "short", - "logBase": 1, - "show": false - } - ], - "yaxis": { - "align": false - } + "type": "timeseries" } ], + "preload": false, "refresh": "1m", - "schemaVersion": 36, - "style": "dark", + "schemaVersion": 41, "tags": [], "templating": { "list": [ { "current": { - "selected": false, - "text": "pulsar-aws-useast1", - "value": "pulsar-aws-useast1" + "text": "pulsar", + "value": "pulsar" }, "datasource": { "type": "prometheus", "uid": "prometheus" }, "definition": "pulsar_producers_count{cluster=~\".+\"}", - "hide": 0, "includeAll": false, "label": "Cluster", - "multi": false, "name": "cluster", "options": [], "query": { @@ -1512,21 +1605,16 @@ }, "refresh": 1, "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { "current": { - "selected": true, "text": [ - "commonstock-production" + "pulsar/pulsar" ], "value": [ - "commonstock-production" + "pulsar/pulsar" ] }, "datasource": { @@ -1534,7 +1622,6 @@ "uid": "prometheus" }, "definition": "pulsar_producers_count{cluster=\"$cluster\"}", - "hide": 0, "includeAll": false, "label": "Tenant", "multi": true, @@ -1546,12 +1633,8 @@ }, "refresh": 2, "regex": "/.*,namespace=\\\"([^\\\"]+)/.*\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -1570,22 +1653,10 @@ "1h", "2h", "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" ] }, "timezone": "browser", "title": "Pulsar / Tenant", "uid": "69344d62-a2d7-47f8-b71b-d9da7a82df5c", - "version": 4, - "weekStart": "" + "version": 1 } diff --git a/helm/kaap-stack/grafana-dashboards/topic.json b/helm/kaap-stack/grafana-dashboards/topic.json index 53e92288..90cc5a6c 100644 --- a/helm/kaap-stack/grafana-dashboards/topic.json +++ b/helm/kaap-stack/grafana-dashboards/topic.json @@ -3,7 +3,10 @@ "list": [ { "builtIn": 1, - "datasource": "-- Grafana --", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", @@ -13,62 +16,100 @@ ] }, "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "iteration": 1631132284400, + "id": 25, "links": [], "panels": [ { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg/s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 0 }, - "hiddenSeries": false, "id": 16, - "legend": { - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_rate_in{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "hide": false, @@ -80,99 +121,101 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local publish rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 0 }, - "hiddenSeries": false, "id": 2, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_subscription_msg_rate_out{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -183,97 +226,98 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local delivery rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 7 }, - "hiddenSeries": false, "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_throughput_in{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -284,102 +328,102 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local publish throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:448", - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:449", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Bps" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 7 }, - "hiddenSeries": false, "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_subscription_msg_throughput_out{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -390,100 +434,100 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local delivery throughput (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 0, + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "count", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 14 }, - "hiddenSeries": false, "id": 7, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_producers_count{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"})", "format": "time_series", "interval": "", @@ -494,6 +538,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_subscriptions_count{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"})", "format": "time_series", "interval": "", @@ -504,6 +552,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_consumers_count{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"})", "format": "time_series", "interval": "", @@ -514,101 +566,101 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Topics - Producers - Subscriptions - Consumers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "short", - "label": "count", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Messages", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 14 }, - "hiddenSeries": false, "id": 4, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_subscription_back_log{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -619,115 +671,279 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Local backlog", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Messages", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": { - "0 - 0.5 ms": "#2F575E", - "0.5 - 1 ms": "#3F6833", - "1 - 5 ms": "#629E51", - "10 - 20 ms": "#E5A8E2", - "100 - 200 ms": "#EF843C", - "20 - 50 ms": "#65C5DB", - "200 ms - 1 s": "#EA6460", - "5 - 10 ms": "#1F78C1", - "50 - 100 ms": "#E5AC0E", - "< +Inf ms": "#BF1B00", - "< 0.5 ms": "#508642", - "> 1 s": "#BF1B00" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 50, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, - "overrides": [] + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "0 - 0.5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#2F575E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "0.5 - 1 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#3F6833", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "1 - 5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#629E51", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "10 - 20 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E5A8E2", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "100 - 200 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EF843C", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "20 - 50 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#65C5DB", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "200 ms - 1 s" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#EA6460", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "5 - 10 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#1F78C1", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "50 - 100 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#E5AC0E", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "< +Inf ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BF1B00", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "< 0.5 ms" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#508642", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "> 1 s" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "#BF1B00", + "mode": "fixed" + } + } + ] + } + ] }, - "fill": 5, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 21 }, - "hiddenSeries": false, "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "< 100 ms", - "yaxis": 1 + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_0_5{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -738,6 +954,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_1{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -748,6 +968,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_5{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -758,6 +982,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_10{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -768,6 +996,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_20{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -778,6 +1010,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_50{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -788,6 +1024,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_100{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "hide": false, @@ -799,6 +1039,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_200{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -809,6 +1053,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_le_1000{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -819,6 +1067,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_write_latency_overflow{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -829,99 +1081,101 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Storage Write Latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "Messages", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 21 }, - "hiddenSeries": false, "id": 17, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [ + "lastNotNull" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_subscription_unacked_messages{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"} ", "format": "time_series", "interval": "", @@ -932,102 +1186,98 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Unacked Messages", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Messages", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "msg / s", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 60, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 6, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 28 }, - "hiddenSeries": false, "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "< 2 KB", - "yaxis": 1 + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + }, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_128{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1038,6 +1288,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_512{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1048,6 +1302,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_1_kb{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1058,6 +1316,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_2_kb{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1068,6 +1330,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_4_kb{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1078,6 +1344,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_16_kb{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1088,6 +1358,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_100_kb{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1098,6 +1372,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_le_1_mb{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1108,6 +1386,10 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_entry_size_overflow{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}) / 60.0", "format": "time_series", "interval": "", @@ -1118,97 +1400,98 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Storage entry size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msg / s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { - "custom": {}, - "links": [] + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 28 }, - "hiddenSeries": false, "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { - "alertThreshold": true + "alertThreshold": true, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } }, - "percentage": false, - "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "pluginVersion": "11.6.1", "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "sum(pulsar_storage_size{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"})", "format": "time_series", "interval": "", @@ -1219,53 +1502,14 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Storage Size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {}, @@ -1273,43 +1517,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 35 }, - "hiddenSeries": false, "id": 18, - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_subscription_msg_rate_redeliver{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -1320,53 +1544,14 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Subscription Redeliver Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msgs/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "fieldConfig": { "defaults": { "custom": {}, @@ -1374,43 +1559,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 35 }, - "hiddenSeries": false, "id": 19, - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_subscription_msg_rate_redeliver{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -1421,53 +1586,14 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Consumer Redeliver Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msgs/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { @@ -1476,43 +1602,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 42 }, - "hiddenSeries": false, "id": 23, - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_replication_rate_in{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -1523,56 +1629,21 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Replication Rate In", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msgs/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { @@ -1581,43 +1652,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 42 }, - "hiddenSeries": false, "id": 22, - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_replication_rate_out{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -1628,56 +1679,21 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Replication Rate Out", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msgs/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { @@ -1686,43 +1702,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 49 }, - "hiddenSeries": false, "id": 20, - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_replication_throughput_in{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -1733,61 +1729,24 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "", "interval": "", "legendFormat": "", "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Replication Throughput In (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:382", - "format": "binBps", - "label": "bytes/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:383", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { @@ -1796,43 +1755,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 49 }, - "hiddenSeries": false, "id": 24, - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_replication_throughput_out{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -1843,58 +1782,21 @@ "step": 10 }, { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "refId": "B" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Replication Rate Out (bytes/s)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:594", - "format": "binBps", - "label": "bytes/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:595", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "description": "", "fieldConfig": { "defaults": { @@ -1903,43 +1805,23 @@ }, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 56 }, - "hiddenSeries": false, "id": 21, - "legend": { - "avg": false, - "current": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", "options": { "alertThreshold": true }, - "percentage": false, "pluginVersion": "7.3.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, "targets": [ { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, "expr": "pulsar_replication_backlog{cluster=~\"$cluster\", namespace=~\"$tenant.+\", namespace=~\"$namespace\", topic=~\"$topic\"}", "format": "time_series", "interval": "", @@ -1950,163 +1832,85 @@ "step": 10 } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, "title": "Replication Backlog", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "msgs/s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "type": "timeseries" } ], + "preload": false, "refresh": "30s", - "schemaVersion": 26, - "style": "dark", + "schemaVersion": 41, "tags": [ "pulsar" ], "templating": { "list": [ { - "allValue": null, "current": { - "selected": false, - "text": "koddi-prod-euwest3-aws", - "value": "koddi-prod-euwest3-aws" + "text": "pulsar", + "value": "pulsar" }, "datasource": "Prometheus", "definition": "pulsar_producers_count", - "error": null, - "hide": 0, "includeAll": false, "label": "Cluster", - "multi": false, "name": "cluster", "options": [], "query": "pulsar_producers_count", "refresh": 1, "regex": "/.*[^_]cluster=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, "current": { - "selected": false, - "text": "replicated-tenant", - "value": "replicated-tenant" + "text": "pulsar", + "value": "pulsar" }, "datasource": "Prometheus", "definition": "pulsar_producers_count{cluster=\"$cluster\"}", - "error": null, - "hide": 0, "includeAll": false, "label": "Tenant", - "multi": false, "name": "tenant", "options": [], "query": "pulsar_producers_count{cluster=\"$cluster\"}", "refresh": 2, "regex": "/[\\s,{]namespace=\\\"([^\\/]+)\\/.*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, "current": { - "selected": false, - "text": "replicated-tenant/gns", - "value": "replicated-tenant/gns" + "text": "pulsar/pulsar/pulsar-broker-0.pulsar-broker.default.svc.cluster.local:8080", + "value": "pulsar/pulsar/pulsar-broker-0.pulsar-broker.default.svc.cluster.local:8080" }, "datasource": "Prometheus", "definition": "pulsar_producers_count{namespace=~\"$tenant.+\"}", - "error": null, - "hide": 0, "includeAll": false, "label": "Namespace", - "multi": false, "name": "namespace", "options": [], "query": "pulsar_producers_count{namespace=~\"$tenant.+\"}", "refresh": 2, "regex": "/[\\s,{]namespace=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" }, { - "allValue": null, "current": { - "selected": false, - "text": "persistent://replicated-tenant/gns/koddi.bid_automation.automatedbidrequests", - "value": "persistent://replicated-tenant/gns/koddi.bid_automation.automatedbidrequests" + "text": "persistent://pulsar/pulsar/pulsar-broker-0.pulsar-broker.default.svc.cluster.local:8080/healthcheck", + "value": "persistent://pulsar/pulsar/pulsar-broker-0.pulsar-broker.default.svc.cluster.local:8080/healthcheck" }, "datasource": "Prometheus", "definition": "pulsar_producers_count{namespace=\"$namespace\"}", - "error": null, - "hide": 0, "includeAll": false, "label": "Topic", - "multi": false, "name": "topic", "options": [], "query": "pulsar_producers_count{namespace=\"$namespace\"}", "refresh": 2, "regex": "/.*topic=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -2125,21 +1929,10 @@ "1h", "2h", "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" ] }, "timezone": "browser", "title": "Pulsar / Topic", "uid": "3xEtii5ml", - "version": 2 + "version": 1 } diff --git a/helm/kaap-stack/grafana-dashboards/zookeeper.json b/helm/kaap-stack/grafana-dashboards/zookeeper.json index bb2946df..45492d0a 100644 --- a/helm/kaap-stack/grafana-dashboards/zookeeper.json +++ b/helm/kaap-stack/grafana-dashboards/zookeeper.json @@ -3,1540 +3,4454 @@ "list": [ { "builtIn": 1, - "datasource": "Prometheus", + "datasource": { + "type": "datasource", + "uid": "grafana" + }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", - "limit": 100, "name": "Annotations & Alerts", - "showIn": 0, "type": "dashboard" } ] }, - "description": "Metrics about ZooKeeper Service", + "description": "ZooKeeper Dashboard for Prometheus metrics scraper", "editable": true, - "gnetId": null, + "fiscalYearStartMonth": 0, "graphTooltip": 0, - "iteration": 1601335452155, + "id": 26, "links": [], "panels": [ { - "datasource": null, + "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, - "id": 15, - "title": "Row title", + "id": 14, + "panels": [], + "title": "Overall", "type": "row" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { - "h": 6, - "w": 4, + "h": 8, + "w": 12, "x": 0, "y": 1 }, - "id": 17, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 + "id": 224, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max", + "min" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": false }, - { - "name": "range to text", - "value": 2 + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "znode count", + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "sum(zookeeper_server_znode_count{job=~\"$job\", instance=~\"$instance\"})", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "znode_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "intervalFactor": 1, - "legendFormat": "znode count", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} znode_count", "refId": "A" - } - ], - "thresholds": "", - "title": "znode", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + }, { - "op": "=", - "text": "N/A", - "value": "null" + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "ephemerals_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} ephemerals", + "refId": "B" } ], - "valueName": "avg" + "title": "znode_count", + "type": "timeseries" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { - "h": 6, - "w": 5, - "x": 4, + "h": 8, + "w": 12, + "x": 12, "y": 1 }, - "id": 19, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 + "id": 4, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "max", + "min" + ], + "displayMode": "list", + "placement": "bottom", + "showLegend": false }, - { - "name": "range to text", - "value": 2 + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "sum(zookeeper_server_watches_count{job=~\"$job\", instance=~\"$instance\"})", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(znode_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", "format": "time_series", - "intervalFactor": 1, + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} znode_count_rate", "refId": "A" - } - ], - "thresholds": "", - "title": "watches", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ + }, { - "op": "=", - "text": "N/A", - "value": "null" + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(ephemerals_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "instant": false, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} ephemerals_rate", + "refId": "B" } ], - "valueName": "avg" + "title": "znode_count_rate", + "type": "timeseries" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "thresholds" + }, + "displayName": "", + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "index": 0 + }, + { + "color": "red", + "index": 1, + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { - "h": 6, - "w": 5, - "x": 9, - "y": 1 + "h": 8, + "w": 12, + "x": 0, + "y": 9 }, - "id": 20, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 + "id": 48, + "options": { + "displayMode": "lcd", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "sum(zookeeper_server_ephemerals_count{job=~\"$job\", instance=~\"$instance\"})", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "global_sessions{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "intervalFactor": 1, + "instant": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", "refId": "A" } ], - "thresholds": "", - "title": "ephemerals", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" + "title": "global_sessions", + "type": "bargauge" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "index": 0 + }, + { + "color": "red", + "index": 1, + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { - "h": 6, - "w": 5, - "x": 14, - "y": 1 + "h": 8, + "w": 12, + "x": 12, + "y": 9 }, - "id": 21, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 + "id": 52, + "options": { + "displayMode": "lcd", + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", + "maxVizHeight": 300, + "minVizHeight": 16, + "minVizWidth": 8, + "namePlacement": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + }, + "showUnfilled": true, + "sizing": "auto", + "valueMode": "color" + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "sum(zookeeper_server_data_size_bytes{job=~\"$job\", instance=~\"$instance\"})", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "local_sessions{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "intervalFactor": 1, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", "refId": "A" } ], - "thresholds": "", - "title": "data size", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" + "title": "local_sessions ", + "type": "bargauge" }, { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "Prometheus", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" }, "overrides": [] }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, "gridPos": { - "h": 6, - "w": 5, - "x": 19, - "y": 1 + "h": 8, + "w": 12, + "x": 0, + "y": 17 }, - "id": 22, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 + "id": 168, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false }, - { - "name": "range to text", - "value": 2 + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "sum(zookeeper_server_connections{job=~\"$job\", instance=~\"$instance\"})", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "write_per_namespace_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "intervalFactor": 1, - "refId": "A" - } - ], - "thresholds": "", - "title": "connections", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} write_per_namespace:{{key}}", + "refId": "C" } ], - "valueName": "avg" + "title": "write_per_namespace", + "type": "timeseries" }, { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 7 + "datasource": { + "uid": "$DS_PROMETHEUS" }, - "id": 13, - "panels": [], - "title": "Details", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "description": "All write operations (create / setData / ...)", "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { - "h": 6, + "h": 8, "w": 12, - "x": 0, - "y": 8 - }, - "hiddenSeries": false, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "x": 12, + "y": 17 + }, + "id": 200, "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "irate(zookeeper_server_requests_latency_ms_count{job=~\"$job\", instance=~\"$instance\", type=\"write\"}[60s])", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "read_per_namespace_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", + "hide": false, "intervalFactor": 2, - "legendFormat": "{{ instance }}", - "refId": "B" + "legendFormat": "{{kubernetes_pod_name}} read_per_namespace:{{key}}", + "refId": "C" } ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Write Requests", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "writes / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "title": "read_per_namespace", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "All read operations (getData / getChildren / ...)", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "bytes" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 8 + "h": 8, + "w": 8, + "x": 0, + "y": 25 }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "id": 132, "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "irate(zookeeper_server_requests_latency_ms_count{job=~\"$job\", instance=~\"$instance\", type=\"read\"}[60s])", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "approximate_data_size{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{ instance }}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Read Requests", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "reads / s", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} approximate_data_size", + "refId": "A" + } + ], + "title": "approximate_data_size", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "All write operations (create / setData / ...)", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 14 + "h": 8, + "w": 8, + "x": 8, + "y": 25 }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", + "id": 90, "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "zookeeper_server_requests_latency_ms{job=~\"$job\", instance=~\"$instance\", type=\"write\", quantile=\"0.99\"}", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "packets_received{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "interval": "", "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Write Latency - 99pct", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "legendFormat": "{{kubernetes_pod_name}} packets_received", + "refId": "A" + } + ], + "title": "packets_received", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "description": "All write operations (create / setData / ...)", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { "defaults": { - "custom": {} + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" }, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 14 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", + "h": 8, + "w": 8, + "x": 16, + "y": 25 + }, + "id": 56, "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": false + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "11.6.1", "targets": [ { - "expr": "zookeeper_server_requests_latency_ms{job=~\"$job\", instance=~\"$instance\", type=\"read\", quantile=\"0.99\"}", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "packets_sent{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "interval": "", "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Read Latency - 99pct", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "legendFormat": "{{kubernetes_pod_name}} packets_sent", + "refId": "A" + } + ], + "title": "packets_sent", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "decimals": 1, - "description": "Request Throughput (break down by type)", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { - "defaults": { - "custom": {} - }, + "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { - "h": 7, - "w": 24, + "h": 8, + "w": 8, "x": 0, - "y": 21 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "y": 33 + }, + "id": 184, + "options": {}, "targets": [ { - "expr": "sum(irate(zookeeper_server_requests{job=~\"$job\", instance=~\"$instance\"}[60s])) by (type)", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "response_packet_cache_misses{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "interval": "", "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Request Throughput", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "legendFormat": "{{kubernetes_pod_name}} response_packet_cache_misses", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "response_packet_cache_hits{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} response_packet_cache_hits", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "response_packet_get_children_cache_misses{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} response_packet_get_children_cache_misses", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "response_packet_get_children_cache_hits{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} response_packet_get_children_cache_hits", + "refId": "D" + } + ], + "title": "response_packet_cache", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { - "defaults": { - "custom": {} - }, + "defaults": {}, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 28 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "h": 8, + "w": 8, + "x": 8, + "y": 33 + }, + "id": 120, + "options": {}, "targets": [ { - "expr": "zookeeper_server_znode_count{job=~\"$job\", instance=~\"$instance\"}", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "unrecoverable_error_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "interval": "", "intervalFactor": 2, - "legendFormat": "{{ instance }}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Z-Nodes count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "legendFormat": "{{kubernetes_pod_name}} unrecoverable_error_count", + "refId": "A" + } + ], + "title": "unrecoverable_error_count", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "Size of the data stored in a ZK server", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { - "defaults": { - "custom": {} - }, + "defaults": {}, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 28 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "h": 8, + "w": 8, + "x": 16, + "y": 33 + }, + "id": 235, + "options": {}, "targets": [ { - "expr": "zookeeper_server_data_size_bytes{job=~\"$job\", instance=~\"$instance\"}", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "digest_mismatches_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", "format": "time_series", - "interval": "", "intervalFactor": 2, - "legendFormat": "{{ instance }}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Data set size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "legendFormat": "{{kubernetes_pod_name}} digest_mismatches_count", + "refId": "C" + } + ], + "title": "digest_mismatches_count", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "Number of opened connections", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { - "defaults": { - "custom": {} - }, + "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 0, - "y": 35 - }, - "hiddenSeries": false, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "y": 41 + }, + "id": 140, + "options": {}, "targets": [ { - "expr": "zookeeper_server_connections{job=~\"$job\", instance=~\"$instance\"}", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "startup_snap_load_time", "format": "time_series", - "interval": "", + "hide": true, "intervalFactor": 2, - "legendFormat": "{{ instance }}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Connections", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "legendFormat": "{{kubernetes_pod_name}} startup_snap_load_time-{{quantile}}", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "startup_snap_load_time_count", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} startup_snap_load_time_count", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "startup_snap_load_time_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} startup_snap_load_time", + "refId": "C" + } + ], + "title": "startup_snap_load_time", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { - "defaults": { - "custom": {} - }, + "defaults": {}, "overrides": [] }, - "fill": 1, - "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 8, - "y": 35 - }, - "hiddenSeries": false, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, + "y": 41 + }, + "id": 192, + "options": {}, "targets": [ { - "expr": "zookeeper_server_watches_count{job=~\"$job\", instance=~\"$instance\"}", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "startup_txns_loaded", "format": "time_series", - "interval": "", + "hide": true, "intervalFactor": 2, - "legendFormat": "{{ instance }}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Number of watches", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "legendFormat": "{{kubernetes_pod_name}} startup_txns_loaded-{{quantile}}", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "startup_txns_loaded_count", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} startup_txns_loaded_count", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "startup_txns_loaded_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} startup_txns_loaded", + "refId": "C" + } + ], + "title": "startup_txns_loaded", + "type": "timeseries" }, { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "description": "", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, "fieldConfig": { - "defaults": { - "custom": {} - }, + "defaults": {}, "overrides": [] }, - "fill": 0, - "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 8, "x": 16, - "y": 35 - }, - "hiddenSeries": false, - "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, + "y": 41 + }, + "id": 210, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "dbinittime", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} dbinittime-{{quantile}}", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "dbinittime_count", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} dbinittime_count", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "dbinittime_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} db_init_time", + "refId": "C" + } + ], + "title": "db_init_time", + "type": "timeseries" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 49 + }, + "id": 82, + "panels": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 2 + }, + "id": 124, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max(quorum_size{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "quorum_size", + "refId": "A" + } + ], + "title": "quorum_size", + "type": "stat" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 2 + }, + "id": 225, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "leader_uptime{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}}", + "refId": "A" + } + ], + "title": "leader", + "type": "stat" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 2 + }, + "id": 222, + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "11.6.1", + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "leader_uptime{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} leader_uptime", + "refId": "A" + } + ], + "title": "leader_uptime", + "type": "stat" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 10 + }, + "id": 215, + "options": { + "displayMode": "lcd", + "fieldOptions": { + "calcs": [ + "last" + ], + "defaults": { + "max": 100, + "min": 0 + }, + "mappings": [], + "override": {}, + "thresholds": [ + { + "color": "green", + "index": 0 + }, + { + "color": "red", + "index": 1, + "value": 80 + } + ], + "values": false + }, + "orientation": "vertical" + }, + "pluginVersion": "6.2.2", + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max(learners{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "learners", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max(synced_non_voting_followers{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "synced_non_voting_followers", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max(synced_observers{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "synced_observers", + "refId": "D" + } + ], + "title": "learner/observer", + "type": "bargauge" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 70, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "election_time", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} election_time", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "election_time_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} election_time_count", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "election_time_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} election_time_sum(ms)", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "election_time_sum/election_time_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} election_avg_time(ms)", + "refId": "D" + } + ], + "title": "election_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 26 + }, + "id": 144, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "uptime{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} uptime", + "refId": "B" + } + ], + "title": "quorum uptime", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 26 + }, + "id": 130, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "learner_commit_received_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} learner_commit_received_count", + "refId": "A" + } + ], + "title": "learner_commit_received_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 0, + "y": 34 + }, + "id": 148, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "commit_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} commit_count", + "refId": "A" + } + ], + "title": "commit_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 6, + "y": 34 + }, + "id": 166, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "snap_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} snap_count", + "refId": "A" + } + ], + "title": "snap_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 12, + "y": 34 + }, + "id": 186, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "diff_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} diff_count", + "refId": "A" + } + ], + "title": "diff_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 18, + "y": 34 + }, + "id": 206, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "looking_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} looking_count", + "refId": "A" + } + ], + "title": "looking_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 42 + }, + "id": 154, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "proposal_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} proposal_count", + "refId": "A" + } + ], + "title": "proposal_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 42 + }, + "id": 214, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "last_proposal_size{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} last_proposal_size", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max_proposal_size{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} max_proposal_size", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "min_proposal_size{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} min_proposal_size", + "refId": "C" + } + ], + "title": "proposal_size", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 42 + }, + "id": 202, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(follower_sync_time_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[1m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} follower_sync_time", + "refId": "C" + } + ], + "title": "follower_sync_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 50 + }, + "id": 217, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "learner_handler_qp_size_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} learner_handler_qp_size_sum sid:{{key}}", + "refId": "C" + } + ], + "title": "learner_handler_qp_size", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 50 + }, + "id": 208, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "quit_leading_due_to_disloyal_voter{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} quit_leading_due_to_disloyal_voter", + "refId": "A" + } + ], + "title": "quit_leading_due_to_disloyal_voter", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 50 + }, + "id": 219, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(om_commit_process_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} om_commit_process_time", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(om_proposal_process_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} om_proposal_process_time", + "refId": "A" + } + ], + "title": "Observer Master", + "type": "timeseries" + } + ], + "title": "Quorum/Leader Election", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 50 + }, + "id": 36, + "panels": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 3 + }, + "id": 212, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "watch_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} watch_count", + "refId": "A" + } + ], + "title": "watch_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 3 + }, + "id": 178, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "node_changed_watch_count_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} node_changed_watch_count", + "refId": "C" + } + ], + "title": "node_changed_watch_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 3 + }, + "id": 174, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "node_children_watch_count_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} node_children_watch_count", + "refId": "C" + } + ], + "title": "node_children_watch_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 11 + }, + "id": 150, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "node_deleted_watch_count_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} node_deleted_watch_count", + "refId": "C" + } + ], + "title": "node_deleted_watch_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 11 + }, + "id": 96, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "node_created_watch_count_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} node_created_watch_count", + "refId": "A" + } + ], + "title": "node_created_watch_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 11 + }, + "id": 223, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "revalidate_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} revalidate_count", + "refId": "A" + } + ], + "title": "revalidate_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 19 + }, + "id": 46, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "stale_sessions_expired{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} stale_sessions_expired", + "refId": "A" + } + ], + "title": "stale_sessions_expired", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 19 + }, + "id": 194, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "dead_watchers_cleared{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} dead_watchers_cleared", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "dead_watchers_queued{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} dead_watchers_queued", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(dead_watchers_cleaner_latency_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} dead_watchers_cleaner_latency", + "refId": "C" + } + ], + "title": "dead_watchers", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 19 + }, + "id": 62, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "add_dead_watcher_stall_time{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} add_dead_watcher_stall_time", + "refId": "A" + } + ], + "title": "add_dead_watcher_stall_time", + "type": "timeseries" + } + ], + "title": "Session/Watch", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 51 + }, + "id": 102, + "panels": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 4 + }, + "id": 66, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "outstanding_requests{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} outstanding_requests", + "refId": "A" + } + ], + "title": "outstanding_requests", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 4 + }, + "id": 104, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "last_client_response_size{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} last_client_response_size", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "min_client_response_size{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} min_client_response_size", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max_client_response_size{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} max_client_response_size", + "refId": "C" + } + ], + "title": "client_response_size", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 4 + }, + "id": 146, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "bytes_received_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} bytes_received_count", + "refId": "A" + } + ], + "title": "bytes_received_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 12 + }, + "id": 176, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "connection_request_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} connection_request_count", + "refId": "A" + } + ], + "title": "connection_request_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 12 + }, + "id": 190, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "num_alive_connections{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} num_alive_connections", + "refId": "A" + } + ], + "title": "num_alive_connections", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 12 + }, + "id": 86, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "connection_rejected{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} connection_rejected", + "refId": "A" + } + ], + "title": "connection_rejected", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 20 + }, + "id": 128, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "connection_drop_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} connection_drop_count", + "refId": "A" + } + ], + "title": "connection_drop_count", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 20 + }, + "id": 60, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "connection_drop_probability{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} connection_drop_probability", + "refId": "A" + } + ], + "title": "connection_drop_probability", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 20 + }, + "id": 54, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "sessionless_connections_expired{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} sessionless_connections_expired", + "refId": "A" + } + ], + "title": "sessionless_connections_expired", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 28 + }, + "id": 180, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(connection_token_deficit_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} connection_token_deficit", + "refId": "C" + } + ], + "title": "connection_token_deficit", + "type": "timeseries" + } + ], + "title": "Client/Connection", + "type": "row" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 52 + }, + "id": 112, + "panels": [], + "title": "Disk/Snapshot", + "type": "row" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 53 + }, + "id": 122, + "options": { + "fieldOptions": { + "calcs": [ + "last" + ], + "defaults": { + "max": 1024, + "min": 0, + "unit": "short" + }, + "mappings": [], + "override": {}, + "thresholds": [ + { + "color": "green", + "index": 0 + }, + { + "color": "red", + "index": 1, + "value": 800 + } + ], + "values": false + }, + "orientation": "horizontal", + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "6.2.2", + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "open_file_descriptor_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}}", + "refId": "A" + } + ], + "title": "open_file_descriptor", + "type": "gauge" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 61 + }, + "id": 114, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "fsynctime{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} fsynctime", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "fsynctime_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} fsynctime_count", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "fsynctime_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} fsynctime_sum(ms)", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "fsynctime_sum * 1000 /fsynctime_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} fsynctime_avg(μs)", + "refId": "D" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "irate(fsynctime_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[1m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} fsynctime_rate", + "refId": "E" + } + ], + "title": "fsync_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 69 + }, + "id": 88, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(snapshottime_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} snapshot_time_rate", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "snapshottime_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} snapshottime_count", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "snapshottime_sum / snapshottime_count{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "hide": true, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} snapshottime_avg(ms)", + "refId": "B" + } + ], + "title": "snapshot_time", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 77 + }, + "id": 136, + "panels": [], + "title": "Prep_Processor", + "type": "row" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 78 + }, + "id": 158, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(prep_process_time_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} prep_process_time", + "refId": "A" + } + ], + "title": "prep_process_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 78 + }, + "id": 138, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(prep_processor_queue_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} prep_processor_queue_time_ms", + "refId": "C" + } + ], + "title": "prep_processor_queue_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 78 + }, + "id": 156, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(prep_processor_queue_size_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} prep_processor_queue_size", + "refId": "C" + } + ], + "title": "prep_processor_queue_size", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 86 + }, + "id": 160, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "prep_processor_request_queued{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} prep_processor_request_queued", + "refId": "A" + } + ], + "title": "prep_processor_request_queued", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 86 + }, + "id": 92, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "outstanding_changes_queued{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} outstanding_changes_queued", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "outstanding_changes_removed{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} outstanding_changes_removed", + "refId": "B" + } + ], + "title": "outstanding_changes_queued", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 86 + }, + "id": 32, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(close_session_prep_time_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} close_session_prep_time", + "refId": "A" + } + ], + "title": "close_session_prep_time", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 94 + }, + "id": 2, + "panels": [], + "title": "Sync_Processor", + "type": "row" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 95 + }, + "id": 142, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(sync_process_time_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} sync_process_time", + "refId": "C" + } + ], + "title": "sync_process_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 95 + }, + "id": 18, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(sync_processor_queue_flush_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} sync_processor_queue_flush_time", + "refId": "A" + } + ], + "title": "sync_processor_queue_flush_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 95 + }, + "id": 26, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(sync_processor_queue_size_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} sync_processor_queue_size", + "refId": "C" + } + ], + "title": "sync_processor_queue_size", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 103 + }, + "id": 16, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "sync_processor_request_queued{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} sync_processor_request_queued", + "refId": "A" + } + ], + "title": "sync_processor_request_queued", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 103 + }, + "id": 24, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(sync_processor_batch_size_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} sync_processor_batch_size", + "refId": "C" + } + ], + "title": "sync_processor_batch_size", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 111 + }, + "id": 108, + "panels": [], + "title": "Commit_Processor", + "type": "row" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 112 + }, + "id": 118, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(commit_process_time_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} commit_process_time", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(read_commitproc_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} read_commitproc_time", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(write_commitproc_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} write_commitproc_time", + "refId": "B" + } + ], + "title": "commit_process_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 112 + }, + "id": 72, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(write_commit_proc_req_queued_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} write_commit_proc_req_queued", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(read_commit_proc_req_queued_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} read_commit_proc_req_queued", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(commit_commit_proc_req_queued_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} commit_commit_proc_req_queued", + "refId": "B" + } + ], + "title": "commit_proc_req_queued", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 112 + }, + "id": 44, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(requests_in_session_queue_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} requests_in_session_queue", + "refId": "C" + } + ], + "title": "requests_in_session_queue", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 120 + }, + "id": 58, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(read_commit_proc_issued_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} read_commit_proc_issued", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(write_commit_proc_issued_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} write_commit_proc_issued", + "refId": "A" + } + ], + "title": "commit_proc_issued", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 120 + }, + "id": 164, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(concurrent_request_processing_in_commit_processor_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} concurrent_request_processing_in_commit_processor", + "refId": "C" + } + ], + "title": "concurrent_request_processing_in_commit_processor", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 120 + }, + "id": 188, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(time_waiting_empty_pool_in_commit_processor_read_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} time_waiting_empty_pool_in_commit_processor_read", + "refId": "C" + } + ], + "title": "time_waiting_empty_pool_in_commit_processor_read", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 128 + }, + "id": 30, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(pending_session_queue_size_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} pending_session_queue_size", + "refId": "B" + } + ], + "title": "pending_session_queue_size", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 128 + }, + "id": 94, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(local_write_committed_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} local_write_committed_time_ms", + "refId": "C" + } + ], + "title": "local_write_committed_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 128 + }, + "id": 74, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(server_write_committed_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} server_write_committed_time", + "refId": "A" + } + ], + "title": "server_write_committed_time", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 136 + }, + "id": 106, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(write_batch_time_in_commit_processor_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "hide": false, + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} write_batch_time_in_commit_processor", + "refId": "A" + } + ], + "title": "write_batch_time_in_commit_processor", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 136 + }, + "id": 34, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(reads_after_write_in_session_queue_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} reads_after_write_in_session_queue", + "refId": "B" + } + ], + "title": "reads_after_write_in_session_queue", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 136 + }, + "id": 50, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(session_queues_drained_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} session_queues_drained", + "refId": "C" + } + ], + "title": "session_queues_drained", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 144 + }, + "id": 38, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(reads_issued_from_session_queue_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} reads_issued_from_session_queue", + "refId": "C" + } + ], + "title": "reads_issued_from_session_queue", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 144 + }, + "id": 152, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "request_commit_queued{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{kubernetes_pod_name}} request_commit_queued", + "refId": "A" + } + ], + "title": "request_commit_queued", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 152 + }, + "id": 170, + "panels": [], + "title": "Final_Processor", + "type": "row" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 153 + }, + "id": 172, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(write_final_proc_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} write_final_proc_time_ms", + "refId": "C" + } + ], + "title": "write_final_proc_time_ms", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 153 + }, + "id": 228, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(read_final_proc_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} read_final_proc_time_ms", + "refId": "C" + } + ], + "title": "read_final_proc_time_ms", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 161 + }, + "id": 80, + "panels": [], + "title": "Latency", + "type": "row" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 162 + }, + "id": 198, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(readlatency_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} readlatency", + "refId": "C" + } + ], + "title": "read_latency", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 162 + }, + "id": 78, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(updatelatency_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} updatelatency", + "refId": "C" + } + ], + "title": "update_latency", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 170 + }, + "id": 100, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max_latency{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} max_latency", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "min_latency{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} min_latency", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "avg_latency{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} avg_latency", + "refId": "C" + } + ], + "title": "max_min_avg_latency", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 170 + }, + "id": 134, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(proposal_latency_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} proposal_latency", + "refId": "C" + } + ], + "title": "proposal_latency", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 178 + }, + "id": 162, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(quorum_ack_latency_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} quorum_ack_latency", + "refId": "C" + } + ], + "title": "quorum_ack_latency", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 178 + }, + "id": 126, + "options": {}, "targets": [ { - "expr": "zookeeper_server_ephemerals_count{job=~\"$job\", instance=~\"$instance\"}", + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(ack_latency_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", "format": "time_series", - "interval": "", "intervalFactor": 2, - "legendFormat": "{{ instance }}", - "metric": "zookeeper_server_requests_latency_ms_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Number of ephemerals", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } + "legendFormat": "{{kubernetes_pod_name}} ack_latency_sum", + "refId": "C" + } + ], + "title": "ack_latency", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 186 + }, + "id": 196, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(propagation_latency_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} propagation_latency", + "refId": "C" + } + ], + "title": "propagation_latency", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 186 + }, + "id": 182, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(commit_propagation_latency_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} commit_propagation_latency", + "refId": "C" + } + ], + "title": "commit_propagation_latency", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 194 + }, + "id": 42, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "proposal_ack_creation_latency{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} proposal_ack_creation_latency-{{quantile}}", + "refId": "A" + } + ], + "title": "proposal_ack_creation_latency", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 202 + }, + "id": 238, + "panels": [], + "title": "Security", + "type": "row" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 203 + }, + "id": 236, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "tls_handshake_exceeded{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} tls_handshake_exceeded", + "refId": "C" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "outstanding_tls_handshake{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} outstanding_tls_handshake", + "refId": "A" + } + ], + "title": "tls_handshake", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 203 + }, + "id": 64, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "ensemble_auth_fail{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} ensemble_auth_fail", + "refId": "A" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "ensemble_auth_success{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} ensemble_auth_success", + "refId": "B" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "ensemble_auth_skip{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} ensemble_auth_skip", + "refId": "C" + } + ], + "title": "ensemble_auth", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 211 + }, + "id": 227, + "panels": [], + "title": "JVM", + "type": "row" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 212 + }, + "id": 204, + "maxDataPoints": 100, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max(jvm_classes_loaded{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "C" + } + ], + "title": "jvm_classes_loaded", + "type": "stat" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 212 + }, + "id": 229, + "maxDataPoints": 100, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max(jvm_threads_current{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "C" + } + ], + "title": "jvm_threads_current", + "type": "stat" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 212 + }, + "id": 230, + "maxDataPoints": 100, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "max(jvm_threads_deadlocked{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "", + "refId": "C" + } + ], + "title": "jvm_threads_deadlocked", + "type": "stat" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 220 + }, + "id": 231, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(jvm_pause_time_ms_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} jvm_pause_time_ms", + "refId": "C" + } + ], + "title": "jvm_pause_time_ms", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 8, + "y": 220 + }, + "id": 232, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "rate(jvm_gc_collection_seconds_sum{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}[5m])", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} gc:{{gc}}", + "refId": "C" + } + ], + "title": "jvm_gc_collection_seconds", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 16, + "y": 220 + }, + "id": 233, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "jvm_threads_state{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} state:{{state}}", + "refId": "C" + } + ], + "title": "jvm_threads_state", + "type": "timeseries" + }, + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "fieldConfig": { + "defaults": {}, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 8, + "x": 0, + "y": 228 + }, + "id": 234, + "options": {}, + "targets": [ + { + "datasource": { + "uid": "$DS_PROMETHEUS" + }, + "expr": "jvm_memory_pool_bytes_used{kubernetes_pod_name=~\"$kubernetes_pod_name\",job=~\"$job\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{kubernetes_pod_name}} pool:{{pool}}", + "refId": "C" + } + ], + "title": "jvm_memory_pool_bytes_used", + "type": "timeseries" } ], - "schemaVersion": 25, - "style": "dark", + "preload": false, + "refresh": "5s", + "schemaVersion": 41, "tags": [ - "pulsar" + "v4" ], "templating": { "list": [ { - "allValue": null, "current": { - "selected": true, + "text": "Prometheus", + "value": "prometheus" + }, + "includeAll": false, + "label": "Datasource", + "name": "DS_PROMETHEUS", + "options": [], + "query": "prometheus", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "current": { "text": "zookeeper", "value": "zookeeper" }, - "datasource": "Prometheus", - "definition": "zookeeper_server_requests{job=~\".+\"}", - "hide": 0, - "includeAll": true, + "hide": 2, "label": "job", - "multi": false, "name": "job", - "options": [], - "query": "zookeeper_server_requests{job=~\".+\"}", - "refresh": 1, - "regex": "/.*[^_]job=\\\"(zookeeper)\\\".*/", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "query": "zookeeper", + "skipUrlSync": true, + "type": "constant" }, { - "allValue": null, "current": { - "selected": false, - "text": "All", - "value": "$__all" + "text": [ + "All" + ], + "value": [ + "$__all" + ] }, - "datasource": "Prometheus", - "definition": "zookeeper_server_requests{job=~\"$job\", instance=~\".+\"}", - "hide": 0, + "datasource": "$DS_PROMETHEUS", + "definition": "label_values({job=~\"$job\"}, kubernetes_pod_name)", "includeAll": true, - "label": "zookeeper server", - "multi": false, - "name": "instance", + "label": "Pod", + "multi": true, + "name": "kubernetes_pod_name", "options": [], - "query": "zookeeper_server_requests{job=~\"$job\", instance=~\".+\"}", - "refresh": 2, - "regex": "/.*[^_]instance=\\\"([^\\\"]+)\\\".*/", - "skipUrlSync": false, + "query": "label_values({job=~\"$job\"}, kubernetes_pod_name)", + "refresh": 1, + "regex": "", "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -1544,32 +4458,9 @@ "from": "now-1h", "to": "now" }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, + "timepicker": {}, "timezone": "browser", "title": "Pulsar / ZooKeeper", - "uid": "16iR0-EZk", + "uid": "df7w3bhgumu4gf", "version": 1 } From f74c65099b3b9dc4cd43a34d806e98d5552be93a Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Fri, 26 Dec 2025 17:24:36 -0600 Subject: [PATCH 54/69] grafana: handle multiple bookie statefulsets (#233) Check for multiple 'component' labels for bookkeepers to allow for more than one bookkeeper statefulset. --- ...{book-compact.json => bookkeeper-compaction.json} | 0 helm/kaap-stack/grafana-dashboards/bookkeeper.json | 12 ++++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) rename helm/kaap-stack/grafana-dashboards/{book-compact.json => bookkeeper-compaction.json} (100%) diff --git a/helm/kaap-stack/grafana-dashboards/book-compact.json b/helm/kaap-stack/grafana-dashboards/bookkeeper-compaction.json similarity index 100% rename from helm/kaap-stack/grafana-dashboards/book-compact.json rename to helm/kaap-stack/grafana-dashboards/bookkeeper-compaction.json diff --git a/helm/kaap-stack/grafana-dashboards/bookkeeper.json b/helm/kaap-stack/grafana-dashboards/bookkeeper.json index 6cf238bc..a0e2b2b6 100644 --- a/helm/kaap-stack/grafana-dashboards/bookkeeper.json +++ b/helm/kaap-stack/grafana-dashboards/bookkeeper.json @@ -2309,14 +2309,18 @@ "value": "bookkeeper" }, "datasource": "Prometheus", - "definition": "bookkeeper_server_ADD_ENTRY{job=~\"$job\"}", + "definition": "bookkeeper_server_ADD_ENTRY{component=~\"bookkeeper\\\\d?\"}", "includeAll": true, - "label": "job", + "label": "Bookie Set", "name": "job", "options": [], - "query": "bookkeeper_server_ADD_ENTRY{job=~\"$job\"}", + "query": { + "qryType": 4, + "query": "bookkeeper_server_ADD_ENTRY{component=~\"bookkeeper\\\\d?\"}", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, "refresh": 2, - "regex": "/.*[^_]job=\\\"(bookkeeper)\\\".*/", + "regex": "/.*component=\\\"(bookkeeper\\d?)\\\".*/", "sort": 1, "type": "query" }, From 24d17a9e75720b4ea5fcf583fb5359e4b2743451 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Mon, 29 Dec 2025 12:47:56 -0600 Subject: [PATCH 55/69] [maven-release-plugin] prepare release operator-0.4.2 --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 4 ++-- tests/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index 11ba1c56..a665b50f 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.2-SNAPSHOT + 0.4.2 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 6a2b45d3..2217c3bf 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.2-SNAPSHOT + 0.4.2 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index d29cfc6d..de67a862 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.2-SNAPSHOT + 0.4.2 4.0.0 diff --git a/pom.xml b/pom.xml index a2949cd3..ad3eb78e 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.4.2-SNAPSHOT + 0.4.2 operator-common operator @@ -33,7 +33,7 @@ scm:git:git@github.com:datastax/kaap.git scm:git:git@github.com:datastax/kaap.git https://github.com/datastax/kaap - HEAD + operator-0.4.2 true diff --git a/tests/pom.xml b/tests/pom.xml index a276f31c..a608baad 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.2-SNAPSHOT + 0.4.2 4.0.0 From def8ec0d6152a1460ced3254fa84e2467867da37 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Mon, 29 Dec 2025 12:47:58 -0600 Subject: [PATCH 56/69] [maven-release-plugin] prepare for next development iteration --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 4 ++-- tests/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index a665b50f..9ddc1187 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.2 + 0.4.3-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 2217c3bf..92f11473 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.2 + 0.4.3-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index de67a862..6c8f0d31 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.2 + 0.4.3-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index ad3eb78e..acf7c375 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.4.2 + 0.4.3-SNAPSHOT operator-common operator @@ -33,7 +33,7 @@ scm:git:git@github.com:datastax/kaap.git scm:git:git@github.com:datastax/kaap.git https://github.com/datastax/kaap - operator-0.4.2 + HEAD true diff --git a/tests/pom.xml b/tests/pom.xml index a608baad..d732dfe0 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.2 + 0.4.3-SNAPSHOT 4.0.0 From fb0644fd852661e624bc204627f190aa3c33c394 Mon Sep 17 00:00:00 2001 From: Paul Gier Date: Fri, 2 Jan 2026 11:40:01 -0600 Subject: [PATCH 57/69] Release Helm charts for 0.4.2 (#234) * Release kaap chart 0.4.2 * Release kaap stack chart 0.4.2 * update the image version in Helm values when releasing the Helm chart * gracefully handle cases where there are no additional doc changes --- .github/workflows/ci-release-kaap-chart.yaml | 5 ++--- helm/kaap-stack/Chart.yaml | 2 +- helm/kaap/Chart.yaml | 2 +- helm/kaap/values.yaml | 4 ++-- release/release.sh | 13 ++++++++++++- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci-release-kaap-chart.yaml b/.github/workflows/ci-release-kaap-chart.yaml index c2ed17d4..e7e94bdf 100644 --- a/.github/workflows/ci-release-kaap-chart.yaml +++ b/.github/workflows/ci-release-kaap-chart.yaml @@ -50,6 +50,5 @@ jobs: mkdir -p kaap mv /tmp/README.md kaap/README.md git add kaap/README.md - git commit -m "kaap/README.md" - git pull --rebase origin gh-pages - git push origin gh-pages + # Commit only if changes exist; push only if commit succeeds + git commit -m "kaap/README.md" && git pull --rebase origin gh-pages && git push origin gh-pages || echo "Nothing to push" diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index 602b0fe7..6573df64 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.4.1 +version: 0.4.2 dependencies: - name: kaap version: 0.4.x diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 5286cf90..0016bf3f 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.4.1 +version: 0.4.2 diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 21e3a601..7cc035f1 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -38,7 +38,7 @@ fullnameOverride: "" operator: enabled: true watchAllNamespaces: false - image: datastax/kaap:0.4.1 + image: datastax/kaap:0.4.2 imagePullPolicy: IfNotPresent replicas: 1 nodeSelector: {} @@ -71,4 +71,4 @@ cluster: name: pulsar image: datastax/lunastreaming-all:4.0_3.6 storage: - existingStorageClassName: default \ No newline at end of file + existingStorageClassName: default diff --git a/release/release.sh b/release/release.sh index 195a4a37..e95b8e6e 100755 --- a/release/release.sh +++ b/release/release.sh @@ -16,6 +16,7 @@ # set -e +VERSION_REGEX="[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z-]+)?" check_clean() { if [ ! -z "$(git status --porcelain)" ]; then @@ -24,10 +25,12 @@ check_clean() { exit 1 fi } + validate_new_version() { local v=$1 - [[ "${v}" =~ ^[0-9].[0-9].[0-9]$ ]] || (echo "new_version format is incorrect. The format must be in format MAJOR.MINOR.PATCH"; exit 1) + [[ "${v}" =~ ^$VERSION_REGEX$ ]] || (echo "new_version format is incorrect. The format must be in format MAJOR.MINOR.PATCH"; exit 1) } + validate_artifact() { local v=$1 [[ "$v" == "operator" || "$v" == "kaap-stack-chart" || "$v" == "kaap-chart" ]] || (echo "artifact must be one of kaap-chart,kaap-stack-chart,operator. got $v"; exit 1) @@ -49,6 +52,13 @@ replace_version_in_chart() { line_number=$(grep -n 'version:' $file | cut -d ':' -f1 | head -n 1) sed -i '' -- "${line_number}s/.*/version: $new_version/" $file } +replace_version_in_helm_values() { + local file=$1 + local new_version=$2 + echo "replace in values $file $new_version" + set -x + sed -E -i '' -- "s|image: datastax/kaap:$VERSION_REGEX$|image: datastax/kaap:$new_version|g" "$file" +} artifact=$1 new_version=$2 @@ -79,6 +89,7 @@ if [[ "$artifact" == "operator" ]]; then echo "$new_version released." elif [[ "$artifact" == "kaap-chart" ]]; then replace_version_in_chart helm/kaap/Chart.yaml $new_version + replace_version_in_helm_values helm/kaap/values.yaml $new_version git commit -am "Release kaap chart $new_version" git tag kaap-$new_version git push From fa0d6b3645272bff6aee31ed558d74185ac94e0e Mon Sep 17 00:00:00 2001 From: Rutuja Deore Date: Wed, 4 Feb 2026 21:00:43 +0530 Subject: [PATCH 58/69] AS-5066: updated bookies panel query to handle multiple bookeepers sets (#237) --- helm/kaap-stack/grafana-dashboards/overview-by-broker.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/kaap-stack/grafana-dashboards/overview-by-broker.json b/helm/kaap-stack/grafana-dashboards/overview-by-broker.json index afea4a2a..f0ec06d8 100644 --- a/helm/kaap-stack/grafana-dashboards/overview-by-broker.json +++ b/helm/kaap-stack/grafana-dashboards/overview-by-broker.json @@ -333,7 +333,7 @@ "pluginVersion": "11.6.1", "targets": [ { - "expr": "count(count(up{job=\"bookkeeper\"}) by (instance))", + "expr": "count(count(up{job=~\"bookkeeper.*\"}) by (instance))", "format": "time_series", "intervalFactor": 2, "legendFormat": "", @@ -952,7 +952,7 @@ "pluginVersion": "11.6.1", "targets": [ { - "expr": "100 * count(up{job=\"bookkeeper\"} == 1) / count(up{job=\"bookkeeper\"})", + "expr": "100 * count(up{job=~\"bookkeeper.*\"} == 1) / count(up{job=~\"bookkeeper.*\"})", "format": "time_series", "intervalFactor": 2, "legendFormat": "", From 253af6f44e64bc98328609d7efac5c7dc5ccb9f7 Mon Sep 17 00:00:00 2001 From: Rutuja Deore Date: Wed, 11 Feb 2026 11:44:11 +0530 Subject: [PATCH 59/69] Release kaap chart 0.4.3 (#238) --- helm/kaap/Chart.yaml | 2 +- helm/kaap/values.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 0016bf3f..4e80f115 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.4.2 +version: 0.4.3 diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 7cc035f1..9fbce2df 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -38,7 +38,7 @@ fullnameOverride: "" operator: enabled: true watchAllNamespaces: false - image: datastax/kaap:0.4.2 + image: datastax/kaap:0.4.3 imagePullPolicy: IfNotPresent replicas: 1 nodeSelector: {} From 525ee773cfd0939ee3fb1d0fb5142fbaa2b56ae0 Mon Sep 17 00:00:00 2001 From: Rutuja Deore Date: Wed, 11 Feb 2026 11:44:29 +0530 Subject: [PATCH 60/69] Release kaap stack chart 0.4.3 (#239) --- helm/kaap-stack/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index 6573df64..c4e14d1b 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.4.2 +version: 0.4.3 dependencies: - name: kaap version: 0.4.x From 502408311a05c76d5633daa90214d012c2ae6fdb Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Wed, 18 Feb 2026 15:38:01 +0530 Subject: [PATCH 61/69] Release documentation update for order of releases (#242) --- RELEASE.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/RELEASE.md b/RELEASE.md index a42817b7..0d9b0462 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -6,8 +6,22 @@ The project contains 3 different and independents artifacts: 3. KAAP Stack Chart The releases process are independent. You can also do the release on a different branch and merge to main. +(**PR based**). For reference, check [here.](https://github.com/datastax/kaap/pull/212) +## Release Order Guidance +This is not required to be followed if you are just releasing a new version for only one project. + +### operator -> kaap → kaap-stack +To ensure `kaap-stack` is packaged with the latest `kaap` version and latest `operator` version. +This applies **only when a new `kaap` or `operator` version is part of the release cycle**. + +This is also because `kaap-stack` uses a local dependency: +```yaml +repository: file://../kaap +``` + +A release is considered completed only when the PR is merged if we are doing a PR based approach. ## Operator image (datastax/kaap:latest) From 9eb3ce3aabaf6ffb69556812b8e82a0e711e9976 Mon Sep 17 00:00:00 2001 From: hshankar31 Date: Wed, 25 Feb 2026 22:01:18 +0530 Subject: [PATCH 62/69] STREAM-799: [fix] CVEs found in KAAP operator (#241) * STREAM-799: [fix] CVEs found in KAAP operator and OpenJDK * New Snyk vul resolved. --- operator/Dockerfile | 2 +- operator/pom.xml | 4 ++-- pom.xml | 15 ++++++++++----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/operator/Dockerfile b/operator/Dockerfile index 7a82864c..a365b28b 100644 --- a/operator/Dockerfile +++ b/operator/Dockerfile @@ -1,4 +1,4 @@ -FROM registry.access.redhat.com/ubi8/openjdk-21:1.23 +FROM registry.access.redhat.com/ubi8/openjdk-21:latest ENV LANGUAGE='en_US:en' diff --git a/operator/pom.xml b/operator/pom.xml index 6c8f0d31..9893d758 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -79,11 +79,11 @@ org.bouncycastle - bcprov-jdk15on + bcprov-jdk18on org.bouncycastle - bcpkix-jdk15on + bcpkix-jdk18on diff --git a/pom.xml b/pom.xml index acf7c375..e7199520 100644 --- a/pom.xml +++ b/pom.xml @@ -59,9 +59,9 @@ 1.5.1 4.2.0 5.6.0 - 3.9.2 - 1.70 - 1.5.20 + 3.9.4 + 1.83 + 1.5.32 @@ -189,12 +189,17 @@ org.bouncycastle - bcprov-jdk15on + bcprov-jdk18on ${bouncy-castle.version} org.bouncycastle - bcpkix-jdk15on + bcpkix-jdk18on + ${bouncy-castle.version} + + + org.bouncycastle + bcutil-jdk18on ${bouncy-castle.version} From 38d092f6df9a72f7e4cc366517940a4ff086d9cd Mon Sep 17 00:00:00 2001 From: Rutuja Deore Date: Fri, 27 Feb 2026 17:31:34 +0530 Subject: [PATCH 63/69] Operator release 0.4.3 (#240) * [maven-release-plugin] prepare release operator-0.4.3 * [maven-release-plugin] prepare for next development iteration --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index 9ddc1187..3c7d384a 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.3-SNAPSHOT + 0.4.4-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 92f11473..17316c2c 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.3-SNAPSHOT + 0.4.4-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index 9893d758..21e63bce 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.3-SNAPSHOT + 0.4.4-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index e7199520..84f7f3d1 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.4.3-SNAPSHOT + 0.4.4-SNAPSHOT operator-common operator diff --git a/tests/pom.xml b/tests/pom.xml index d732dfe0..cc9b6651 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.3-SNAPSHOT + 0.4.4-SNAPSHOT 4.0.0 From ab11e3d2f3e5e8364eadbeacec1b299800db01ab Mon Sep 17 00:00:00 2001 From: Rutuja Deore Date: Fri, 27 Feb 2026 23:33:34 +0530 Subject: [PATCH 64/69] AS-5172: Operator release 0.4.4 (#243) * [maven-release-plugin] prepare release operator-0.4.4 # Conflicts: # migration-tool/pom.xml # operator-common/pom.xml # operator/pom.xml # pom.xml # tests/pom.xml * [maven-release-plugin] prepare for next development iteration --- migration-tool/pom.xml | 2 +- operator-common/pom.xml | 2 +- operator/pom.xml | 2 +- pom.xml | 2 +- tests/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/migration-tool/pom.xml b/migration-tool/pom.xml index 3c7d384a..85f835df 100644 --- a/migration-tool/pom.xml +++ b/migration-tool/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.4-SNAPSHOT + 0.4.5-SNAPSHOT 4.0.0 diff --git a/operator-common/pom.xml b/operator-common/pom.xml index 17316c2c..4b6007e9 100644 --- a/operator-common/pom.xml +++ b/operator-common/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.4-SNAPSHOT + 0.4.5-SNAPSHOT 4.0.0 diff --git a/operator/pom.xml b/operator/pom.xml index 21e63bce..d563589b 100644 --- a/operator/pom.xml +++ b/operator/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.4-SNAPSHOT + 0.4.5-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index 84f7f3d1..c7e7aa47 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ com.datastax.oss kaap pom - 0.4.4-SNAPSHOT + 0.4.5-SNAPSHOT operator-common operator diff --git a/tests/pom.xml b/tests/pom.xml index cc9b6651..27cc36b5 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -20,7 +20,7 @@ kaap com.datastax.oss - 0.4.4-SNAPSHOT + 0.4.5-SNAPSHOT 4.0.0 From f24bae72d70e99dd1d28a93eec84f6c0fc69c82c Mon Sep 17 00:00:00 2001 From: Rutuja Deore Date: Thu, 12 Mar 2026 14:09:59 +0530 Subject: [PATCH 65/69] Release kaap chart 0.4.4 (#244) --- helm/kaap/Chart.yaml | 2 +- helm/kaap/values.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/helm/kaap/Chart.yaml b/helm/kaap/Chart.yaml index 4e80f115..90af78fe 100644 --- a/helm/kaap/Chart.yaml +++ b/helm/kaap/Chart.yaml @@ -19,4 +19,4 @@ apiVersion: v2 name: kaap description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.4.3 +version: 0.4.4 diff --git a/helm/kaap/values.yaml b/helm/kaap/values.yaml index 9fbce2df..3b8467df 100644 --- a/helm/kaap/values.yaml +++ b/helm/kaap/values.yaml @@ -38,7 +38,7 @@ fullnameOverride: "" operator: enabled: true watchAllNamespaces: false - image: datastax/kaap:0.4.3 + image: datastax/kaap:0.4.4 imagePullPolicy: IfNotPresent replicas: 1 nodeSelector: {} From a0333d8b0a5db1785bb90e9ef5b56a34cbd36188 Mon Sep 17 00:00:00 2001 From: Rutuja Deore Date: Thu, 12 Mar 2026 14:57:13 +0530 Subject: [PATCH 66/69] AS-5192: Release kaap stack chart 0.4.4 (#245) --- helm/kaap-stack/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/kaap-stack/Chart.yaml b/helm/kaap-stack/Chart.yaml index c4e14d1b..2a5a1918 100644 --- a/helm/kaap-stack/Chart.yaml +++ b/helm/kaap-stack/Chart.yaml @@ -19,7 +19,7 @@ apiVersion: v2 name: kaap-stack description: Kubernetes Autoscaling for Apache Pulsar Stack -version: 0.4.3 +version: 0.4.4 dependencies: - name: kaap version: 0.4.x From 4ed155e2e10a67d60f8d02188b160c7279041698 Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Mon, 23 Mar 2026 13:12:20 +0530 Subject: [PATCH 67/69] Update testcontainers version to 1.21.4 (#248) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c7e7aa47..294e5381 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ 1.15 3.19.0 0.11.5 - 1.21.3 + 1.21.4 3.4.2 1.5.1 4.2.0 From f0cf87f0276e1a7f1aa92ccaa90f7f41d52b2b87 Mon Sep 17 00:00:00 2001 From: sandeep-ctds Date: Tue, 24 Mar 2026 18:25:03 +0530 Subject: [PATCH 68/69] AS-5182: ACME issuer integration into KAAP values (#246) * updated tls config to include acme * Updated CertManagerCertificatesProvisioner.java to process the acme config and generate certificates * Added support for multiple challenge solvers * Refactored duplicate code for validation * Added external certificate support for ACME * minor fix when generate is false on external services. * pre-commit and checkstyle * moved from deprecated createOrReplace to serverSideApply with forceConflicts * test fix for forceConflicts() Update the annotation to jupiter to allow it to run in CI * updated rbac rules for cert-manager issuers and certificates to include patch * added unit test for the acme certificate generation flow --- docs/api-reference.md | 691 +++++++++++++++++- ...utorecoveries.kaap.oss.datastax.com-v1.yml | 234 +++++- .../bastions.kaap.oss.datastax.com-v1.yml | 234 +++++- .../bookkeepers.kaap.oss.datastax.com-v1.yml | 234 +++++- .../crds/brokers.kaap.oss.datastax.com-v1.yml | 234 +++++- ...ctionsworkers.kaap.oss.datastax.com-v1.yml | 234 +++++- .../crds/proxies.kaap.oss.datastax.com-v1.yml | 234 +++++- ...ulsarclusters.kaap.oss.datastax.com-v1.yml | 234 +++++- .../zookeepers.kaap.oss.datastax.com-v1.yml | 234 +++++- helm/kaap/templates/rbac/cluster-scoped.yaml | 1 + .../kaap/templates/rbac/namespace-scoped.yaml | 1 + .../oss/kaap/mocks/MockKubernetesClient.java | 2 + .../CertManagerCertificatesProvisioner.java | 371 ++++++++-- .../oss/kaap/crds/configs/tls/TlsConfig.java | 137 +++- ...ertManagerCertificatesProvisionerTest.java | 240 +++++- .../datastax/oss/kaap/tests/helm/TlsTest.java | 12 +- 16 files changed, 3012 insertions(+), 315 deletions(-) diff --git a/docs/api-reference.md b/docs/api-reference.md index 0c1dd435..52b4dbb8 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -61645,6 +61645,13 @@ Certificate provisioner configuration. + acme + object + + ACME certificate provisioner configuration.
+ + false + selfSigned object @@ -61655,6 +61662,662 @@ Certificate provisioner configuration. +### PulsarCluster.spec.global.tls.certProvisioner.acme + + + +ACME certificate provisioner configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
brokerobject + Broker self signed certificate config.
+
false
enabledboolean + Generate self signed certificates for broker, proxy and functions worker.
+
false
externalmap[string]object + External services self signed certificate config (e.g., admin console, grafana). The key is the service name, and the value contains generation config
+
false
issuerobject + ACME issuer configuration.
+
false
privateKeyobject + Cert-manager options for generating the private key.
+
false
proxyobject + Proxy self signed certificate config.
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.broker + + + +Broker self signed certificate config. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
dnsNames[]string + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
+
false
generateboolean + Generate certificate for the component.
+
false
privateKeyobject + Cert-manager options for generating the private key.
+
false
secretNamestring + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.broker.privateKey + + + +Cert-manager options for generating the private key. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
algorithmstring +
+
false
encodingstring +
+
false
rotationPolicystring +
+
false
sizeinteger +
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.external[key] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
dnsNames[]string + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
+
false
generateboolean + Generate certificate for the component.
+
false
privateKeyobject + Cert-manager options for generating the private key.
+
false
secretNamestring + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.external[key].privateKey + + + +Cert-manager options for generating the private key. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
algorithmstring +
+
false
encodingstring +
+
false
rotationPolicystring +
+
false
sizeinteger +
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.issuer + + + +ACME issuer configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
emailstring + Email used for ACME registration.
+
false
namestring + Name of the Issuer resource.
+
false
privateKeySecretNamestring + Secret storing the ACME account private key.
+
false
serverstring + ACME server URL.
+
false
solvers[]object + ACME challenge solvers. Solvers are evaluated in order; no domain-based routing
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.issuer.solvers[index] + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
dns01object + DNS01 solver configuration.
+
false
http01object + HTTP01 solver configuration.
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.issuer.solvers[index].dns01 + + + +DNS01 solver configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
cloudDNSobject +
+
false
cloudflareobject +
+
false
route53object +
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.issuer.solvers[index].dns01.cloudDNS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
projectstring +
+
false
serviceAccountSecretKeystring +
+
false
serviceAccountSecretNamestring +
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.issuer.solvers[index].dns01.cloudflare + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
apiTokenSecretKeystring +
+
false
apiTokenSecretNamestring +
+
false
emailstring +
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.issuer.solvers[index].dns01.route53 + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
hostedZoneIdstring +
+
false
regionstring +
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.issuer.solvers[index].http01 + + + +HTTP01 solver configuration. + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
ingressClassstring + Ingress class used for HTTP01 challenge.
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.privateKey + + + +Cert-manager options for generating the private key. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
algorithmstring +
+
false
encodingstring +
+
false
rotationPolicystring +
+
false
sizeinteger +
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.proxy + + + +Proxy self signed certificate config. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
dnsNames[]string + A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
+
false
generateboolean + Generate certificate for the component.
+
false
privateKeyobject + Cert-manager options for generating the private key.
+
false
secretNamestring + The name of the Kubernetes Secret where the generated certificate and key will be stored whe perComponent is enabled. Required for external services. Internal services pick up the secret name from the tls config if not specified
+
false
+ + +### PulsarCluster.spec.global.tls.certProvisioner.acme.proxy.privateKey + + + +Cert-manager options for generating the private key. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
algorithmstring +
+
false
encodingstring +
+
false
rotationPolicystring +
+
false
sizeinteger +
+
false
+ + ### PulsarCluster.spec.global.tls.certProvisioner.selfSigned @@ -61777,14 +62440,14 @@ Autorecovery self signed certificate config. dnsNames []string - A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
false generate boolean - Generate self signed certificates for the component.
+ Generate certificate for the component.
false @@ -61871,14 +62534,14 @@ Bookkeeper self signed certificate config. dnsNames []string - A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
false generate boolean - Generate self signed certificates for the component.
+ Generate certificate for the component.
false @@ -61965,14 +62628,14 @@ Broker self signed certificate config. dnsNames []string - A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
false generate boolean - Generate self signed certificates for the component.
+ Generate certificate for the component.
false @@ -62059,14 +62722,14 @@ Cert-manager options for generating the private key. dnsNames []string - A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
false generate boolean - Generate self signed certificates for the component.
+ Generate certificate for the component.
false @@ -62153,14 +62816,14 @@ Functions worker self signed certificate config. dnsNames []string - A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
false generate boolean - Generate self signed certificates for the component.
+ Generate certificate for the component.
false @@ -62294,14 +62957,14 @@ Proxy self signed certificate config. dnsNames []string - A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
false generate boolean - Generate self signed certificates for the component.
+ Generate certificate for the component.
false @@ -62388,14 +63051,14 @@ Zookeeper self signed certificate config. dnsNames []string - A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension along with the default K8s service DNS.
+ A list of DNS names (and IP addresses) to include in the certificate's Subject Alternative Names (SANs) extension.
false generate boolean - Generate self signed certificates for the component.
+ Generate certificate for the component.
false diff --git a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml index 332ac1e8..1fc6fd9f 100644 --- a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml @@ -1682,6 +1682,198 @@ spec: certProvisioner: description: "Certificate provisioner configuration." properties: + acme: + description: "ACME certificate provisioner configuration." + properties: + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + issuer: + description: "ACME issuer configuration." + properties: + email: + description: "Email used for ACME registration." + type: "string" + name: + description: "Name of the Issuer resource." + type: "string" + privateKeySecretName: + description: "Secret storing the ACME account\ + \ private key." + type: "string" + server: + description: "ACME server URL." + type: "string" + solvers: + description: "ACME challenge solvers. Solvers\ + \ are evaluated in order; no domain-based routing" + items: + properties: + dns01: + description: "DNS01 solver configuration." + properties: + cloudDNS: + properties: + project: + type: "string" + serviceAccountSecretKey: + type: "string" + serviceAccountSecretName: + type: "string" + type: "object" + cloudflare: + properties: + apiTokenSecretKey: + type: "string" + apiTokenSecretName: + type: "string" + email: + type: "string" + type: "object" + route53: + properties: + hostedZoneId: + type: "string" + region: + type: "string" + type: "object" + type: "object" + http01: + description: "HTTP01 solver configuration." + properties: + ingressClass: + description: "Ingress class used for\ + \ HTTP01 challenge." + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" selfSigned: description: "Self signed certificate provisioner configuration." properties: @@ -1692,14 +1884,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1729,14 +1919,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1766,14 +1954,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1810,14 +1996,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject\ - \ Alternative Names (SANs) extension along\ - \ with the default K8s service DNS." + \ Alternative Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1853,14 +2037,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1911,14 +2093,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1948,14 +2128,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ diff --git a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml index 98790279..24d98245 100644 --- a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml @@ -1686,6 +1686,198 @@ spec: certProvisioner: description: "Certificate provisioner configuration." properties: + acme: + description: "ACME certificate provisioner configuration." + properties: + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + issuer: + description: "ACME issuer configuration." + properties: + email: + description: "Email used for ACME registration." + type: "string" + name: + description: "Name of the Issuer resource." + type: "string" + privateKeySecretName: + description: "Secret storing the ACME account\ + \ private key." + type: "string" + server: + description: "ACME server URL." + type: "string" + solvers: + description: "ACME challenge solvers. Solvers\ + \ are evaluated in order; no domain-based routing" + items: + properties: + dns01: + description: "DNS01 solver configuration." + properties: + cloudDNS: + properties: + project: + type: "string" + serviceAccountSecretKey: + type: "string" + serviceAccountSecretName: + type: "string" + type: "object" + cloudflare: + properties: + apiTokenSecretKey: + type: "string" + apiTokenSecretName: + type: "string" + email: + type: "string" + type: "object" + route53: + properties: + hostedZoneId: + type: "string" + region: + type: "string" + type: "object" + type: "object" + http01: + description: "HTTP01 solver configuration." + properties: + ingressClass: + description: "Ingress class used for\ + \ HTTP01 challenge." + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" selfSigned: description: "Self signed certificate provisioner configuration." properties: @@ -1696,14 +1888,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1733,14 +1923,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1770,14 +1958,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1814,14 +2000,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject\ - \ Alternative Names (SANs) extension along\ - \ with the default K8s service DNS." + \ Alternative Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1857,14 +2041,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1915,14 +2097,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -1952,14 +2132,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ diff --git a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml index 9efe0ae1..b733eab6 100644 --- a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml @@ -5029,6 +5029,198 @@ spec: certProvisioner: description: "Certificate provisioner configuration." properties: + acme: + description: "ACME certificate provisioner configuration." + properties: + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + issuer: + description: "ACME issuer configuration." + properties: + email: + description: "Email used for ACME registration." + type: "string" + name: + description: "Name of the Issuer resource." + type: "string" + privateKeySecretName: + description: "Secret storing the ACME account\ + \ private key." + type: "string" + server: + description: "ACME server URL." + type: "string" + solvers: + description: "ACME challenge solvers. Solvers\ + \ are evaluated in order; no domain-based routing" + items: + properties: + dns01: + description: "DNS01 solver configuration." + properties: + cloudDNS: + properties: + project: + type: "string" + serviceAccountSecretKey: + type: "string" + serviceAccountSecretName: + type: "string" + type: "object" + cloudflare: + properties: + apiTokenSecretKey: + type: "string" + apiTokenSecretName: + type: "string" + email: + type: "string" + type: "object" + route53: + properties: + hostedZoneId: + type: "string" + region: + type: "string" + type: "object" + type: "object" + http01: + description: "HTTP01 solver configuration." + properties: + ingressClass: + description: "Ingress class used for\ + \ HTTP01 challenge." + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" selfSigned: description: "Self signed certificate provisioner configuration." properties: @@ -5039,14 +5231,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5076,14 +5266,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5113,14 +5301,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5157,14 +5343,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject\ - \ Alternative Names (SANs) extension along\ - \ with the default K8s service DNS." + \ Alternative Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5200,14 +5384,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5258,14 +5440,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5295,14 +5475,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ diff --git a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml index b654aa1c..86e1eeb1 100644 --- a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml @@ -4961,6 +4961,198 @@ spec: certProvisioner: description: "Certificate provisioner configuration." properties: + acme: + description: "ACME certificate provisioner configuration." + properties: + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + issuer: + description: "ACME issuer configuration." + properties: + email: + description: "Email used for ACME registration." + type: "string" + name: + description: "Name of the Issuer resource." + type: "string" + privateKeySecretName: + description: "Secret storing the ACME account\ + \ private key." + type: "string" + server: + description: "ACME server URL." + type: "string" + solvers: + description: "ACME challenge solvers. Solvers\ + \ are evaluated in order; no domain-based routing" + items: + properties: + dns01: + description: "DNS01 solver configuration." + properties: + cloudDNS: + properties: + project: + type: "string" + serviceAccountSecretKey: + type: "string" + serviceAccountSecretName: + type: "string" + type: "object" + cloudflare: + properties: + apiTokenSecretKey: + type: "string" + apiTokenSecretName: + type: "string" + email: + type: "string" + type: "object" + route53: + properties: + hostedZoneId: + type: "string" + region: + type: "string" + type: "object" + type: "object" + http01: + description: "HTTP01 solver configuration." + properties: + ingressClass: + description: "Ingress class used for\ + \ HTTP01 challenge." + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" selfSigned: description: "Self signed certificate provisioner configuration." properties: @@ -4971,14 +5163,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5008,14 +5198,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5045,14 +5233,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5089,14 +5275,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject\ - \ Alternative Names (SANs) extension along\ - \ with the default K8s service DNS." + \ Alternative Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5132,14 +5316,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5190,14 +5372,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -5227,14 +5407,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ diff --git a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml index e75c68c0..425977f3 100644 --- a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml @@ -2572,6 +2572,198 @@ spec: certProvisioner: description: "Certificate provisioner configuration." properties: + acme: + description: "ACME certificate provisioner configuration." + properties: + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + issuer: + description: "ACME issuer configuration." + properties: + email: + description: "Email used for ACME registration." + type: "string" + name: + description: "Name of the Issuer resource." + type: "string" + privateKeySecretName: + description: "Secret storing the ACME account\ + \ private key." + type: "string" + server: + description: "ACME server URL." + type: "string" + solvers: + description: "ACME challenge solvers. Solvers\ + \ are evaluated in order; no domain-based routing" + items: + properties: + dns01: + description: "DNS01 solver configuration." + properties: + cloudDNS: + properties: + project: + type: "string" + serviceAccountSecretKey: + type: "string" + serviceAccountSecretName: + type: "string" + type: "object" + cloudflare: + properties: + apiTokenSecretKey: + type: "string" + apiTokenSecretName: + type: "string" + email: + type: "string" + type: "object" + route53: + properties: + hostedZoneId: + type: "string" + region: + type: "string" + type: "object" + type: "object" + http01: + description: "HTTP01 solver configuration." + properties: + ingressClass: + description: "Ingress class used for\ + \ HTTP01 challenge." + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" selfSigned: description: "Self signed certificate provisioner configuration." properties: @@ -2582,14 +2774,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -2619,14 +2809,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -2656,14 +2844,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -2700,14 +2886,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject\ - \ Alternative Names (SANs) extension along\ - \ with the default K8s service DNS." + \ Alternative Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -2743,14 +2927,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -2801,14 +2983,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -2838,14 +3018,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ diff --git a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml index b245542f..74c2a820 100644 --- a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml @@ -339,6 +339,198 @@ spec: certProvisioner: description: "Certificate provisioner configuration." properties: + acme: + description: "ACME certificate provisioner configuration." + properties: + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + issuer: + description: "ACME issuer configuration." + properties: + email: + description: "Email used for ACME registration." + type: "string" + name: + description: "Name of the Issuer resource." + type: "string" + privateKeySecretName: + description: "Secret storing the ACME account\ + \ private key." + type: "string" + server: + description: "ACME server URL." + type: "string" + solvers: + description: "ACME challenge solvers. Solvers\ + \ are evaluated in order; no domain-based routing" + items: + properties: + dns01: + description: "DNS01 solver configuration." + properties: + cloudDNS: + properties: + project: + type: "string" + serviceAccountSecretKey: + type: "string" + serviceAccountSecretName: + type: "string" + type: "object" + cloudflare: + properties: + apiTokenSecretKey: + type: "string" + apiTokenSecretName: + type: "string" + email: + type: "string" + type: "object" + route53: + properties: + hostedZoneId: + type: "string" + region: + type: "string" + type: "object" + type: "object" + http01: + description: "HTTP01 solver configuration." + properties: + ingressClass: + description: "Ingress class used for\ + \ HTTP01 challenge." + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" selfSigned: description: "Self signed certificate provisioner configuration." properties: @@ -349,14 +541,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -386,14 +576,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -423,14 +611,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -467,14 +653,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject\ - \ Alternative Names (SANs) extension along\ - \ with the default K8s service DNS." + \ Alternative Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -510,14 +694,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -568,14 +750,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -605,14 +785,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ diff --git a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml index 073ada27..958a2896 100644 --- a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml @@ -14570,6 +14570,198 @@ spec: certProvisioner: description: "Certificate provisioner configuration." properties: + acme: + description: "ACME certificate provisioner configuration." + properties: + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + issuer: + description: "ACME issuer configuration." + properties: + email: + description: "Email used for ACME registration." + type: "string" + name: + description: "Name of the Issuer resource." + type: "string" + privateKeySecretName: + description: "Secret storing the ACME account\ + \ private key." + type: "string" + server: + description: "ACME server URL." + type: "string" + solvers: + description: "ACME challenge solvers. Solvers\ + \ are evaluated in order; no domain-based routing" + items: + properties: + dns01: + description: "DNS01 solver configuration." + properties: + cloudDNS: + properties: + project: + type: "string" + serviceAccountSecretKey: + type: "string" + serviceAccountSecretName: + type: "string" + type: "object" + cloudflare: + properties: + apiTokenSecretKey: + type: "string" + apiTokenSecretName: + type: "string" + email: + type: "string" + type: "object" + route53: + properties: + hostedZoneId: + type: "string" + region: + type: "string" + type: "object" + type: "object" + http01: + description: "HTTP01 solver configuration." + properties: + ingressClass: + description: "Ingress class used for\ + \ HTTP01 challenge." + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" selfSigned: description: "Self signed certificate provisioner configuration." properties: @@ -14580,14 +14772,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -14617,14 +14807,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -14654,14 +14842,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -14698,14 +14884,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject\ - \ Alternative Names (SANs) extension along\ - \ with the default K8s service DNS." + \ Alternative Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -14741,14 +14925,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -14799,14 +14981,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -14836,14 +15016,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ diff --git a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml index a3d7b677..fa3396e9 100644 --- a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml @@ -339,6 +339,198 @@ spec: certProvisioner: description: "Certificate provisioner configuration." properties: + acme: + description: "ACME certificate provisioner configuration." + properties: + broker: + description: "Broker self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + enabled: + description: "Generate self signed certificates for\ + \ broker, proxy and functions worker." + type: "boolean" + external: + additionalProperties: + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject\ + \ Alternative Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key\ + \ will be stored whe perComponent is enabled.\ + \ Required for external services. Internal\ + \ services pick up the secret name from the\ + \ tls config if not specified" + type: "string" + type: "object" + description: "External services self signed certificate\ + \ config (e.g., admin console, grafana). The key\ + \ is the service name, and the value contains generation\ + \ config" + type: "object" + issuer: + description: "ACME issuer configuration." + properties: + email: + description: "Email used for ACME registration." + type: "string" + name: + description: "Name of the Issuer resource." + type: "string" + privateKeySecretName: + description: "Secret storing the ACME account\ + \ private key." + type: "string" + server: + description: "ACME server URL." + type: "string" + solvers: + description: "ACME challenge solvers. Solvers\ + \ are evaluated in order; no domain-based routing" + items: + properties: + dns01: + description: "DNS01 solver configuration." + properties: + cloudDNS: + properties: + project: + type: "string" + serviceAccountSecretKey: + type: "string" + serviceAccountSecretName: + type: "string" + type: "object" + cloudflare: + properties: + apiTokenSecretKey: + type: "string" + apiTokenSecretName: + type: "string" + email: + type: "string" + type: "object" + route53: + properties: + hostedZoneId: + type: "string" + region: + type: "string" + type: "object" + type: "object" + http01: + description: "HTTP01 solver configuration." + properties: + ingressClass: + description: "Ingress class used for\ + \ HTTP01 challenge." + type: "string" + type: "object" + type: "object" + type: "array" + type: "object" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + proxy: + description: "Proxy self signed certificate config." + properties: + dnsNames: + description: "A list of DNS names (and IP addresses)\ + \ to include in the certificate's Subject Alternative\ + \ Names (SANs) extension." + items: + type: "string" + type: "array" + generate: + description: "Generate certificate for the component." + type: "boolean" + privateKey: + description: "Cert-manager options for generating\ + \ the private key." + properties: + algorithm: + type: "string" + encoding: + type: "string" + rotationPolicy: + type: "string" + size: + type: "integer" + type: "object" + secretName: + description: "The name of the Kubernetes Secret\ + \ where the generated certificate and key will\ + \ be stored whe perComponent is enabled. Required\ + \ for external services. Internal services pick\ + \ up the secret name from the tls config if\ + \ not specified" + type: "string" + type: "object" + type: "object" selfSigned: description: "Self signed certificate provisioner configuration." properties: @@ -349,14 +541,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -386,14 +576,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -423,14 +611,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -467,14 +653,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject\ - \ Alternative Names (SANs) extension along\ - \ with the default K8s service DNS." + \ Alternative Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -510,14 +694,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -568,14 +750,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ @@ -605,14 +785,12 @@ spec: dnsNames: description: "A list of DNS names (and IP addresses)\ \ to include in the certificate's Subject Alternative\ - \ Names (SANs) extension along with the default\ - \ K8s service DNS." + \ Names (SANs) extension." items: type: "string" type: "array" generate: - description: "Generate self signed certificates\ - \ for the component." + description: "Generate certificate for the component." type: "boolean" privateKey: description: "Cert-manager options for generating\ diff --git a/helm/kaap/templates/rbac/cluster-scoped.yaml b/helm/kaap/templates/rbac/cluster-scoped.yaml index 7d4a677f..f9ef9f3b 100644 --- a/helm/kaap/templates/rbac/cluster-scoped.yaml +++ b/helm/kaap/templates/rbac/cluster-scoped.yaml @@ -140,6 +140,7 @@ rules: - get - update - list + - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding diff --git a/helm/kaap/templates/rbac/namespace-scoped.yaml b/helm/kaap/templates/rbac/namespace-scoped.yaml index cbe4fc6f..033bb26c 100644 --- a/helm/kaap/templates/rbac/namespace-scoped.yaml +++ b/helm/kaap/templates/rbac/namespace-scoped.yaml @@ -160,6 +160,7 @@ rules: - get - update - list + - patch --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding diff --git a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java index 79e789dc..6c413a1e 100644 --- a/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java +++ b/operator-common/src/test/java/com/datastax/oss/kaap/mocks/MockKubernetesClient.java @@ -195,6 +195,7 @@ private void mockAndInterceptResourceCreation(String namespace) { final NamespaceableResource interaction = Mockito.mock(NamespaceableResource.class); when(interaction.inNamespace(eq(namespace))).thenReturn(interaction); + when(interaction.forceConflicts()).thenReturn(interaction); when(interaction.create()).thenAnswer(ic1 -> { addCreatedResource(ic); return null; @@ -217,6 +218,7 @@ private void mockAndInterceptResourceCreation(String namespace) { final Resource resourceMock = Mockito.mock(Resource.class); when(interaction.resource(any(HasMetadata.class))).thenAnswer(ic2 -> { final Resource mockedResource = resourceMock; + when(mockedResource.forceConflicts()).thenReturn(mockedResource); when(mockedResource.create()).thenAnswer(ic3 -> { addCreatedResource(ic2); return null; diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisioner.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisioner.java index 24350688..c66af227 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisioner.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisioner.java @@ -27,7 +27,13 @@ import com.datastax.oss.kaap.crds.GlobalSpec; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; import com.datastax.oss.kaap.crds.configs.tls.TlsConfig; -import com.datastax.oss.kaap.crds.configs.tls.TlsConfig.SelfSignedCertificatePerComponentConfig; +import com.datastax.oss.kaap.crds.configs.tls.TlsConfig.ComponentCertificateConfig; +import io.fabric8.certmanager.api.model.acme.v1.ACMEChallengeSolver; +import io.fabric8.certmanager.api.model.acme.v1.ACMEChallengeSolverBuilder; +import io.fabric8.certmanager.api.model.acme.v1.ACMEChallengeSolverDNS01Builder; +import io.fabric8.certmanager.api.model.acme.v1.ACMEChallengeSolverHTTP01Builder; +import io.fabric8.certmanager.api.model.acme.v1.ACMEChallengeSolverHTTP01IngressBuilder; +import io.fabric8.certmanager.api.model.acme.v1.ACMEIssuerBuilder; import io.fabric8.certmanager.api.model.v1.Certificate; import io.fabric8.certmanager.api.model.v1.CertificateBuilder; import io.fabric8.certmanager.api.model.v1.CertificatePrivateKey; @@ -37,6 +43,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; import lombok.extern.jbosslog.JBossLog; import org.apache.commons.lang3.ObjectUtils; @@ -48,6 +55,7 @@ public class CertManagerCertificatesProvisioner { private final PulsarClusterSpec pulsarClusterSpec; private final GlobalSpec globalSpec; private final TlsConfig.SelfSignedCertProvisionerConfig selfSigned; + private final TlsConfig.AcmeCertProvisionerConfig acme; private final String clusterSpecName; private final String ssCaSecretName; private final String caIssuerName; @@ -59,30 +67,36 @@ public CertManagerCertificatesProvisioner(KubernetesClient client, String namesp this.namespace = namespace; this.pulsarClusterSpec = pulsarClusterSpec; this.globalSpec = pulsarClusterSpec.getGlobalSpec(); - if (globalSpec.getTls() == null - || !globalSpec.getTls().getEnabled() - || globalSpec.getTls().getCertProvisioner() == null - || globalSpec.getTls().getCertProvisioner().getSelfSigned() == null) { + TlsConfig tls = globalSpec != null ? globalSpec.getTls() : null; + TlsConfig.CertProvisionerConfig provisioner = tls != null ? tls.getCertProvisioner() : null; + if (tls == null || !Boolean.TRUE.equals(tls.getEnabled()) || provisioner == null) { this.selfSigned = null; + this.acme = null; this.clusterSpecName = null; this.caIssuerName = null; this.ssCaSecretName = null; this.serviceDnsSuffix = null; - } else { - this.selfSigned = globalSpec.getTls().getCertProvisioner().getSelfSigned(); - this.clusterSpecName = globalSpec.getName(); - this.caIssuerName = "%s-ca-issuer".formatted(clusterSpecName); - this.ssCaSecretName = BaseResourcesFactory.getTlsSsCaSecretName(globalSpec); - this.serviceDnsSuffix = "%s.svc.%s".formatted(namespace, globalSpec.getKubernetesClusterDomain()); + return; } - + this.selfSigned = provisioner.getSelfSigned(); + this.acme = provisioner.getAcme(); + this.clusterSpecName = globalSpec.getName(); + this.caIssuerName = "%s-ca-issuer".formatted(clusterSpecName); + this.ssCaSecretName = BaseResourcesFactory.getTlsSsCaSecretName(globalSpec); + this.serviceDnsSuffix = "%s.svc.%s".formatted(namespace, globalSpec.getKubernetesClusterDomain()); } public void generateCertificates() { - if (selfSigned == null) { - return; + validateProvisionersConfig(); + if (selfSigned != null && Boolean.TRUE.equals(selfSigned.getEnabled())) { + generateSelfSignedCertificates(); + } + if (acme != null && Boolean.TRUE.equals(acme.getEnabled())) { + generateAcmeCertificates(); } + } + private void generateSelfSignedCertificates() { createRootCACertificate(); if (selfSigned.getPerComponent() == null || !selfSigned.getPerComponent()) { List dnsNames = new ArrayList<>(); @@ -112,7 +126,8 @@ public void generateCertificates() { certName, globalSpec.getTls().getDefaultSecretName(), selfSigned.getPrivateKey(), - dnsNames + dnsNames, + caIssuerName ); } else { if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getBroker())) { @@ -120,14 +135,18 @@ public void generateCertificates() { globalSpec.getComponents().getBrokerBaseName(), ObjectUtils.firstNonNull(selfSigned.getBroker().getSecretName(), globalSpec.getTls().getBroker().getSecretName()), - getBrokerDNSNames(selfSigned.getBroker())); + getBrokerDNSNames(selfSigned.getBroker()), + caIssuerName, + selfSigned.getPrivateKey()); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getBookkeeper())) { createCertificatePerComponent(selfSigned.getBookkeeper(), globalSpec.getComponents().getBookkeeperBaseName(), ObjectUtils.firstNonNull(selfSigned.getBookkeeper().getSecretName(), globalSpec.getTls().getBookkeeper().getSecretName()), - getBookKeeperDNSNames(selfSigned.getBookkeeper())); + getBookKeeperDNSNames(selfSigned.getBookkeeper()), + caIssuerName, + selfSigned.getPrivateKey()); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getAutorecovery())) { createAutorecoveryCertificate(); @@ -137,14 +156,18 @@ public void generateCertificates() { globalSpec.getComponents().getProxyBaseName(), ObjectUtils.firstNonNull(selfSigned.getProxy().getSecretName(), globalSpec.getTls().getProxy().getSecretName()), - getProxyDNSNames(selfSigned.getProxy())); + getProxyDNSNames(selfSigned.getProxy()), + caIssuerName, + selfSigned.getPrivateKey()); } if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getZookeeper())) { createCertificatePerComponent(selfSigned.getZookeeper(), globalSpec.getComponents().getZookeeperBaseName(), ObjectUtils.firstNonNull(selfSigned.getZookeeper().getSecretName(), globalSpec.getTls().getZookeeper().getSecretName()), - getZookeeperDNSNames(selfSigned.getZookeeper())); + getZookeeperDNSNames(selfSigned.getZookeeper()), + caIssuerName, + selfSigned.getPrivateKey()); } if (TlsConfig.FunctionsWorkerTlsEntryConfig.isEnabled(globalSpec.getTls().getFunctionsWorker())) { @@ -152,20 +175,24 @@ public void generateCertificates() { globalSpec.getComponents().getFunctionsWorkerBaseName(), ObjectUtils.firstNonNull(selfSigned.getFunctionsWorker().getSecretName(), globalSpec.getTls().getFunctionsWorker().getSecretName()), - getFunctionsWorkerDNSNames(selfSigned.getFunctionsWorker())); + getFunctionsWorkerDNSNames(selfSigned.getFunctionsWorker()), + caIssuerName, + selfSigned.getPrivateKey()); } if (selfSigned.getExternal() != null) { - for (Map.Entry entry + for (Map.Entry entry : selfSigned.getExternal().entrySet()) { final String serviceName = entry.getKey(); - final SelfSignedCertificatePerComponentConfig config = entry.getValue(); + final ComponentCertificateConfig config = entry.getValue(); if (config.getGenerate() != null && config.getGenerate()) { createCertificatePerComponent( config, serviceName, config.getSecretName(), - getBaseK8sDnsNames(config, serviceName) + getBaseK8sDnsNames(config, serviceName), + caIssuerName, + selfSigned.getPrivateKey() ); } } @@ -173,9 +200,161 @@ public void generateCertificates() { } } + private void generateAcmeCertificates() { + createAcmeIssuer(); + String issuerName = acme.getIssuer().getName(); + if (TlsConfig.TlsEntryConfig.isEnabled(globalSpec.getTls().getBroker())) { + createCertificatePerComponent( + acme.getBroker(), + globalSpec.getComponents().getBrokerBaseName(), + ObjectUtils.firstNonNull(acme.getBroker().getSecretName(), + globalSpec.getTls().getBroker().getSecretName()), + mergeDnsNames(null, acme.getBroker()), + issuerName, + acme.getPrivateKey() + ); + } + if (TlsConfig.ProxyTlsEntryConfig.isEnabled(globalSpec.getTls().getProxy())) { + createCertificatePerComponent( + acme.getProxy(), + globalSpec.getComponents().getProxyBaseName(), + ObjectUtils.firstNonNull(acme.getProxy().getSecretName(), + globalSpec.getTls().getProxy().getSecretName()), + mergeDnsNames(null, acme.getProxy()), + issuerName, + acme.getPrivateKey() + ); + } + if (acme.getExternal() != null) { + for (Map.Entry entry : acme.getExternal().entrySet()) { + final String serviceName = entry.getKey(); + final ComponentCertificateConfig config = entry.getValue(); + + if (Boolean.TRUE.equals(config.getGenerate())) { + createCertificatePerComponent( + config, + serviceName, + config.getSecretName(), + mergeDnsNames(null, config), + issuerName, + acme.getPrivateKey() + ); + } + } + } + } + + public static void validateAcmeIssuerConfig(TlsConfig.AcmeIssuerConfig config) { + if (config.getSolvers() == null || config.getSolvers().isEmpty()) { + throw new IllegalArgumentException("At least one ACME solver must be configured"); + } + for (TlsConfig.SolverConfig solver : config.getSolvers()) { + int count = 0; + if (solver.getHttp01() != null) { + count++; + } + if (solver.getDns01() != null) { + count++; + } + if (count != 1) { + throw new IllegalArgumentException( + "Exactly one of http01 or dns01 must be configured per solver"); + } + if (solver.getDns01() != null) { + TlsConfig.Dns01Config dns = solver.getDns01(); + int providers = 0; + if (dns.getRoute53() != null) { + providers++; + } + if (dns.getCloudflare() != null) { + providers++; + } + if (dns.getCloudDNS() != null) { + providers++; + } + if (providers != 1) { + throw new IllegalArgumentException( + "Exactly one DNS provider must be configured per solver"); + } + } + } + } + + private void createAcmeIssuer() { + TlsConfig.AcmeIssuerConfig issuerConfig = acme.getIssuer(); + validateAcmeIssuerConfig(issuerConfig); + List solvers = new ArrayList<>(); + + for (TlsConfig.SolverConfig solver : issuerConfig.getSolvers()) { + ACMEChallengeSolverBuilder solverBuilder = new ACMEChallengeSolverBuilder(); + if (solver.getHttp01() != null) { + TlsConfig.Http01Config http = solver.getHttp01(); + solverBuilder.withHttp01( + new ACMEChallengeSolverHTTP01Builder() + .withIngress( + new ACMEChallengeSolverHTTP01IngressBuilder() + .withIngressClassName(http.getIngressClass()) + .build() + ) + .build() + ); + } + + if (solver.getDns01() != null) { + TlsConfig.Dns01Config dns = solver.getDns01(); + ACMEChallengeSolverDNS01Builder dnsBuilder = new ACMEChallengeSolverDNS01Builder(); + if (dns.getRoute53() != null) { + TlsConfig.Route53Config r = dns.getRoute53(); + dnsBuilder + .withNewRoute53() + .withRegion(r.getRegion()) + .withHostedZoneID(r.getHostedZoneId()) + .endRoute53(); + } else if (dns.getCloudflare() != null) { + TlsConfig.CloudflareConfig cf = dns.getCloudflare(); + dnsBuilder + .withNewCloudflare() + .withEmail(cf.getEmail()) + .withNewApiTokenSecretRef(cf.getApiTokenSecretKey(), cf.getApiTokenSecretName()) + .endCloudflare(); + } else if (dns.getCloudDNS() != null) { + TlsConfig.GoogleCloudDnsConfig g = dns.getCloudDNS(); + dnsBuilder + .withNewCloudDNS() + .withProject(g.getProject()) + .withNewServiceAccountSecretRef(g.getServiceAccountSecretKey(), + g.getServiceAccountSecretName()) + .endCloudDNS(); + } + solverBuilder.withDns01(dnsBuilder.build()); + } + solvers.add(solverBuilder.build()); + } + + Issuer issuer = new IssuerBuilder() + .withNewMetadata() + .withName(issuerConfig.getName()) + .withNamespace(namespace) + .endMetadata() + .withNewSpec() + .withAcme( + new ACMEIssuerBuilder() + .withServer(issuerConfig.getServer()) + .withEmail(issuerConfig.getEmail()) + .withNewPrivateKeySecretRef() + .withName(issuerConfig.getPrivateKeySecretName()) + .endPrivateKeySecretRef() + .withSolvers(solvers) + .build() + ) + .endSpec() + .build(); + client.resource(issuer).inNamespace(namespace).forceConflicts().serverSideApply(); + } + private void createAutorecoveryCertificate() { // autorecovery only need to be accessed via the client tls auth, no dns names needed - final TlsConfig.SelfSignedCertificatePerComponentConfig autorecoveryConfig = selfSigned.getAutorecovery(); + final ComponentCertificateConfig autorecoveryConfig = selfSigned.getAutorecovery(); final CertificatePrivateKey privateKey = ObjectUtils .firstNonNull(autorecoveryConfig == null ? null : autorecoveryConfig.getPrivateKey(), @@ -200,26 +379,30 @@ private void createAutorecoveryCertificate() { client.resource(caCertificate) .inNamespace(namespace) - .createOrReplace(); + .forceConflicts() + .serverSideApply(); } - private void createCertificatePerComponent(final TlsConfig.SelfSignedCertificatePerComponentConfig componentConfig, + private void createCertificatePerComponent(final ComponentCertificateConfig componentConfig, final String baseName, final String secretName, - List dnsNames) { - if (componentConfig == null || !componentConfig.getGenerate()) { + List dnsNames, + String issuerName, + CertificatePrivateKey provisionerPrivateKey) { + if (componentConfig == null || !Boolean.TRUE.equals(componentConfig.getGenerate())) { return; } createCertificate( "%s-%s-tls".formatted(clusterSpecName, baseName), secretName, - ObjectUtils.firstNonNull(componentConfig.getPrivateKey(), selfSigned.getPrivateKey()), - dnsNames + ObjectUtils.firstNonNull(componentConfig.getPrivateKey(), provisionerPrivateKey), + dnsNames, + issuerName ); } - private List mergeDnsNames(List k8sDnsNames, SelfSignedCertificatePerComponentConfig config) { + private List mergeDnsNames(List k8sDnsNames, ComponentCertificateConfig config) { final List finalDnsNames = new ArrayList<>(ObjectUtils.firstNonNull(k8sDnsNames, new ArrayList<>())); if (config != null && config.getDnsNames() != null) { finalDnsNames.addAll(config.getDnsNames()); @@ -230,21 +413,23 @@ private List mergeDnsNames(List k8sDnsNames, SelfSignedCertifica private List getDnsNamesForExternalServicesForGlobalCert() { final List dnsNames = new ArrayList<>(); if (selfSigned.getExternal() != null) { - for (Map.Entry entry + for (Map.Entry entry : selfSigned.getExternal().entrySet()) { - final SelfSignedCertificatePerComponentConfig config = entry.getValue(); - dnsNames.addAll(getBaseK8sDnsNames(config, entry.getKey())); + final ComponentCertificateConfig config = entry.getValue(); + if (Boolean.TRUE.equals(config.getGenerate())) { + dnsNames.addAll(getBaseK8sDnsNames(config, entry.getKey())); + } } } return dnsNames; } - private List getBaseK8sDnsNames(SelfSignedCertificatePerComponentConfig config, String serviceName) { + private List getBaseK8sDnsNames(ComponentCertificateConfig config, String serviceName) { List k8sDnsNames = enumerateDnsNames(serviceName, true); return mergeDnsNames(k8sDnsNames, config); } - private List getBookKeeperDNSNames(SelfSignedCertificatePerComponentConfig config) { + private List getBookKeeperDNSNames(ComponentCertificateConfig config) { final String componentBaseName = BookKeeperResourcesFactory.getComponentBaseName(globalSpec); List k8sDnsNames = BookKeeperController .enumerateBookKeeperSets(clusterSpecName, componentBaseName, pulsarClusterSpec.getBookkeeper()).stream() @@ -253,7 +438,7 @@ private List getBookKeeperDNSNames(SelfSignedCertificatePerComponentConf return mergeDnsNames(k8sDnsNames, config); } - private List getFunctionsWorkerDNSNames(SelfSignedCertificatePerComponentConfig config) { + private List getFunctionsWorkerDNSNames(ComponentCertificateConfig config) { final String functionsWorkerBase = FunctionsWorkerResourcesFactory.getResourceName(clusterSpecName, FunctionsWorkerResourcesFactory.getComponentBaseName(globalSpec)); @@ -265,7 +450,7 @@ private List getFunctionsWorkerDNSNames(SelfSignedCertificatePerComponen return mergeDnsNames(k8sDnsNames, config); } - private List getZookeeperDNSNames(SelfSignedCertificatePerComponentConfig config) { + private List getZookeeperDNSNames(ComponentCertificateConfig config) { final String zookeeperDNSNames = ZooKeeperResourcesFactory.getResourceName(clusterSpecName, ZooKeeperResourcesFactory.getComponentBaseName(globalSpec)); @@ -277,7 +462,7 @@ private List getZookeeperDNSNames(SelfSignedCertificatePerComponentConfi return mergeDnsNames(k8sDnsNames, config); } - private List getProxyDNSNames(SelfSignedCertificatePerComponentConfig config) { + private List getProxyDNSNames(ComponentCertificateConfig config) { final String componentBaseName = ProxyResourcesFactory.getComponentBaseName(globalSpec); List k8sDnsNames = ProxyController .enumerateProxySets(clusterSpecName, componentBaseName, pulsarClusterSpec.getProxy()).stream() @@ -286,7 +471,7 @@ private List getProxyDNSNames(SelfSignedCertificatePerComponentConfig co return mergeDnsNames(k8sDnsNames, config); } - private List getBrokerDNSNames(SelfSignedCertificatePerComponentConfig config) { + private List getBrokerDNSNames(ComponentCertificateConfig config) { final String componentBaseName = BrokerResourcesFactory.getComponentBaseName(globalSpec); List k8sDnsNames = BrokerController .enumerateBrokerSets(clusterSpecName, componentBaseName, pulsarClusterSpec.getBroker()).stream() @@ -311,8 +496,9 @@ private List enumerateDnsNames(final String serviceName, boolean wildcar private void createCertificate(String name, String secretName, CertificatePrivateKey privateKey, - List dnsNames) { - final Certificate ssCertificate = new CertificateBuilder() + List dnsNames, + String issuerName) { + final Certificate certificate = new CertificateBuilder() .withNewMetadata() .withName(name) .withNamespace(namespace) @@ -321,16 +507,16 @@ private void createCertificate(String name, .withPrivateKey(privateKey) .withSecretName(secretName) .withNewIssuerRef() - .withName(caIssuerName) + .withName(issuerName) .endIssuerRef() .withDnsNames(dnsNames) .endSpec() .build(); - - client.resource(ssCertificate) + client.resource(certificate) .inNamespace(namespace) - .createOrReplace(); - log.debugf("Created self-signed certificate %s mapped to secret %s", name, secretName); + .forceConflicts() + .serverSideApply(); + log.debugf("Created certificate %s mapped to secret %s", name, secretName); } private void createRootCACertificate() { @@ -349,7 +535,8 @@ private void createRootCACertificate() { client.resource(ssIssuer) .inNamespace(namespace) - .createOrReplace(); + .forceConflicts() + .serverSideApply(); final Certificate caCertificate = new CertificateBuilder() .withNewMetadata() @@ -370,7 +557,8 @@ private void createRootCACertificate() { client.resource(caCertificate) .inNamespace(namespace) - .createOrReplace(); + .forceConflicts() + .serverSideApply(); final Issuer caIssuer = new IssuerBuilder() .withNewMetadata() @@ -386,9 +574,92 @@ private void createRootCACertificate() { client.resource(caIssuer) .inNamespace(namespace) - .createOrReplace(); + .forceConflicts() + .serverSideApply(); log.debug("Created self-signed root CA certificate"); } + private void validateProvisionersConfig() { + if (selfSigned == null || acme == null) { + return; + } + validateComponent( + "broker", + selfSigned.getBroker(), + acme.getBroker(), + globalSpec.getTls().getBroker() + ); + validateComponent( + "proxy", + selfSigned.getProxy(), + acme.getProxy(), + globalSpec.getTls().getProxy() + ); + validateExternal(selfSigned.getExternal(), acme.getExternal()); + } + + private void validateComponent( + String componentName, + ComponentCertificateConfig selfSignedConfig, + ComponentCertificateConfig acmeConfig, + TlsConfig.TlsEntryConfig tlsEntryConfig) { + if (selfSignedConfig == null || acmeConfig == null) { + return; + } + + if (Boolean.TRUE.equals(selfSignedConfig.getGenerate()) + && Boolean.TRUE.equals(acmeConfig.getGenerate())) { + + String ssSecret = ObjectUtils.firstNonNull( + selfSignedConfig.getSecretName(), + tlsEntryConfig.getSecretName() + ); + String acmeSecret = ObjectUtils.firstNonNull( + acmeConfig.getSecretName(), + tlsEntryConfig.getSecretName() + ); + + if (Objects.equals(ssSecret, acmeSecret)) { + throw new IllegalArgumentException( + String.format( + "Invalid TLS configuration: both selfSigned and ACME provisioners generate a %s " + + "certificate using the same secret '%s'. This would cause certificates to " + + "override each other.", componentName, ssSecret + ) + ); + } + } + } + + private void validateExternal(Map selfSignedExternal, + Map acmeExternal) { + if (selfSignedExternal == null || acmeExternal == null) { + return; + } + for (Map.Entry entry : selfSignedExternal.entrySet()) { + String serviceName = entry.getKey(); + ComponentCertificateConfig ssConfig = entry.getValue(); + ComponentCertificateConfig acmeConfig = acmeExternal.get(serviceName); + if (acmeConfig == null) { + continue; + } + if (Boolean.TRUE.equals(ssConfig.getGenerate()) + && Boolean.TRUE.equals(acmeConfig.getGenerate())) { + + String ssSecret = ssConfig.getSecretName(); + String acmeSecret = acmeConfig.getSecretName(); + + if (Objects.equals(ssSecret, acmeSecret)) { + throw new IllegalArgumentException( + String.format("Invalid TLS configuration: both selfSigned and ACME provisioners generate an" + + " external certificate for service '%s' using the same secret '%s'. " + + "This would cause certificates to override each other.", serviceName, + ssSecret + ) + ); + } + } + } + } } \ No newline at end of file diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/configs/tls/TlsConfig.java b/operator/src/main/java/com/datastax/oss/kaap/crds/configs/tls/TlsConfig.java index 4e76751e..0fec85d7 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/configs/tls/TlsConfig.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/configs/tls/TlsConfig.java @@ -25,6 +25,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; +import lombok.experimental.SuperBuilder; @Data @NoArgsConstructor @@ -119,53 +120,149 @@ public FunctionsWorkerTlsEntryConfig(Boolean enabled, String secretName, Boolean public static class CertProvisionerConfig { @JsonPropertyDescription("Self signed certificate provisioner configuration.") SelfSignedCertProvisionerConfig selfSigned; - + @JsonPropertyDescription("ACME certificate provisioner configuration.") + AcmeCertProvisionerConfig acme; } @Data @NoArgsConstructor @AllArgsConstructor - @Builder - public static class SelfSignedCertProvisionerConfig { + @SuperBuilder + public static class BaseCertProvisionerConfig { @JsonPropertyDescription("Generate self signed certificates for broker, proxy and functions worker.") Boolean enabled; - @JsonPropertyDescription("Include dns name in the DNS names covered by the certificate.") - Boolean includeDns; @JsonPropertyDescription("Cert-manager options for generating the private key.") CertificatePrivateKey privateKey; + @JsonPropertyDescription("Broker self signed certificate config.") + ComponentCertificateConfig broker; + @JsonPropertyDescription("Proxy self signed certificate config.") + ComponentCertificateConfig proxy; + @JsonPropertyDescription("External services self signed certificate config (e.g., admin console, grafana). " + + "The key is the service name, and the value contains generation config") + Map external; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @EqualsAndHashCode(callSuper = true) + @ToString(callSuper = true) + public static class SelfSignedCertProvisionerConfig extends BaseCertProvisionerConfig { + @JsonPropertyDescription("Include dns name in the DNS names covered by the certificate.") + Boolean includeDns; @JsonPropertyDescription("Generate a different certificate for each component.") Boolean perComponent; @JsonPropertyDescription("Secret where to store the root CA certificate.") String caSecretName; - @JsonPropertyDescription("Zookeeper self signed certificate config.") - SelfSignedCertificatePerComponentConfig zookeeper; + ComponentCertificateConfig zookeeper; @JsonPropertyDescription("Bookkeeper self signed certificate config.") - SelfSignedCertificatePerComponentConfig bookkeeper; - @JsonPropertyDescription("Broker self signed certificate config.") - SelfSignedCertificatePerComponentConfig broker; - @JsonPropertyDescription("Proxy self signed certificate config.") - SelfSignedCertificatePerComponentConfig proxy; + ComponentCertificateConfig bookkeeper; @JsonPropertyDescription("Functions worker self signed certificate config.") - SelfSignedCertificatePerComponentConfig functionsWorker; + ComponentCertificateConfig functionsWorker; @JsonPropertyDescription("Autorecovery self signed certificate config.") - SelfSignedCertificatePerComponentConfig autorecovery; - @JsonPropertyDescription("External services self signed certificate config (e.g., admin console, grafana). " - + "The key is the service name, and the value contains generation config") - Map external; + ComponentCertificateConfig autorecovery; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @SuperBuilder + @EqualsAndHashCode(callSuper = true) + @ToString(callSuper = true) + public static class AcmeCertProvisionerConfig extends BaseCertProvisionerConfig { + @JsonPropertyDescription("ACME issuer configuration.") + AcmeIssuerConfig issuer; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class AcmeIssuerConfig { + @JsonPropertyDescription("Name of the Issuer resource.") + String name; + @JsonPropertyDescription("ACME server URL.") + String server; + @JsonPropertyDescription("Email used for ACME registration.") + String email; + @JsonPropertyDescription("Secret storing the ACME account private key.") + String privateKeySecretName; + @JsonPropertyDescription("ACME challenge solvers. Solvers are evaluated in order; no domain-based routing") + List solvers; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class SolverConfig { + @JsonPropertyDescription("HTTP01 solver configuration.") + Http01Config http01; + @JsonPropertyDescription("DNS01 solver configuration.") + Dns01Config dns01; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class Http01Config { + @JsonPropertyDescription("Ingress class used for HTTP01 challenge.") + String ingressClass; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class Dns01Config { + Route53Config route53; + CloudflareConfig cloudflare; + GoogleCloudDnsConfig cloudDNS; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class Route53Config { + String region; + String hostedZoneId; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class CloudflareConfig { + String email; + String apiTokenSecretName; + String apiTokenSecretKey; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + @Builder + public static class GoogleCloudDnsConfig { + String project; + String serviceAccountSecretName; + String serviceAccountSecretKey; } @Data @NoArgsConstructor @AllArgsConstructor @Builder - public static class SelfSignedCertificatePerComponentConfig { - @JsonPropertyDescription("Generate self signed certificates for the component.") + public static class ComponentCertificateConfig { + @JsonPropertyDescription("Generate certificate for the component.") Boolean generate; @JsonPropertyDescription("Cert-manager options for generating the private key.") CertificatePrivateKey privateKey; @JsonPropertyDescription("A list of DNS names (and IP addresses) to include in the certificate's Subject " - + "Alternative Names (SANs) extension along with the default K8s service DNS.") + + "Alternative Names (SANs) extension.") List dnsNames; @JsonPropertyDescription("The name of the Kubernetes Secret where the generated certificate " + "and key will be stored whe perComponent is enabled. Required for external services. " diff --git a/operator/src/test/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisionerTest.java b/operator/src/test/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisionerTest.java index 50bb6da1..ce28f14d 100644 --- a/operator/src/test/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisionerTest.java +++ b/operator/src/test/java/com/datastax/oss/kaap/controllers/utils/CertManagerCertificatesProvisionerTest.java @@ -18,10 +18,11 @@ import com.datastax.oss.kaap.common.SerializationUtil; import com.datastax.oss.kaap.crds.cluster.PulsarClusterSpec; import com.datastax.oss.kaap.mocks.MockKubernetesClient; +import io.fabric8.certmanager.api.model.acme.v1.ACMEChallengeSolver; import io.fabric8.certmanager.api.model.v1.Certificate; import io.fabric8.certmanager.api.model.v1.Issuer; +import org.junit.jupiter.api.Test; import org.testng.Assert; -import org.testng.annotations.Test; public class CertManagerCertificatesProvisionerTest { @@ -451,6 +452,243 @@ public void testGeneratePerComponent() throws Exception { } + @Test + public void testAcmeIssuerHttp01() { + final MockKubernetesClient mockKubernetesClient = generateCertificates(""" + global: + name: pul + tls: + enabled: true + broker: + enabled: true + secretName: pul-broker-tls + certProvisioner: + acme: + enabled: true + broker: + generate: true + secretName: pul-broker-tls + issuer: + name: pul-acme-issuer + server: https://acme-v02.api.letsencrypt.org/directory + email: admin@example.com + privateKeySecretName: pul-acme-account-key + solvers: + - http01: + ingressClass: nginx + """); + + final Issuer issuer = mockKubernetesClient + .getCreatedResource(Issuer.class, "pul-acme-issuer") + .getResource(); + assertAcmeIssuerBase(issuer); + Assert.assertEquals(issuer.getSpec().getAcme().getSolvers().size(), 1); + + final ACMEChallengeSolver solver = issuer.getSpec().getAcme().getSolvers().getFirst(); + Assert.assertNotNull(solver.getHttp01()); + Assert.assertNotNull(solver.getHttp01().getIngress()); + Assert.assertEquals(solver.getHttp01().getIngress().getIngressClassName(), "nginx"); + Assert.assertNull(solver.getDns01()); + } + + @Test + public void testAcmeIssuerRoute53() { + final MockKubernetesClient mockKubernetesClient = generateCertificates(""" + global: + name: pul + tls: + enabled: true + broker: + enabled: true + secretName: pul-broker-tls + certProvisioner: + acme: + enabled: true + broker: + generate: true + secretName: pul-broker-tls + issuer: + name: pul-acme-issuer + server: https://acme-v02.api.letsencrypt.org/directory + email: admin@example.com + privateKeySecretName: pul-acme-account-key + solvers: + - dns01: + route53: + region: us-east-1 + hostedZoneId: Z123456789 + """); + + final Issuer issuer = mockKubernetesClient + .getCreatedResource(Issuer.class, "pul-acme-issuer") + .getResource(); + assertAcmeIssuerBase(issuer); + Assert.assertEquals(issuer.getSpec().getAcme().getSolvers().size(), 1); + + final ACMEChallengeSolver solver = issuer.getSpec().getAcme().getSolvers().getFirst(); + Assert.assertNull(solver.getHttp01()); + Assert.assertNotNull(solver.getDns01()); + Assert.assertNotNull(solver.getDns01().getRoute53()); + Assert.assertEquals(solver.getDns01().getRoute53().getRegion(), "us-east-1"); + Assert.assertEquals(solver.getDns01().getRoute53().getHostedZoneID(), "Z123456789"); + Assert.assertNull(solver.getDns01().getCloudflare()); + Assert.assertNull(solver.getDns01().getCloudDNS()); + } + + @Test + public void testAcmeIssuerCloudflare() { + final MockKubernetesClient mockKubernetesClient = generateCertificates(""" + global: + name: pul + tls: + enabled: true + broker: + enabled: true + secretName: pul-broker-tls + certProvisioner: + acme: + enabled: true + broker: + generate: true + secretName: pul-broker-tls + issuer: + name: pul-acme-issuer + server: https://acme-v02.api.letsencrypt.org/directory + email: admin@example.com + privateKeySecretName: pul-acme-account-key + solvers: + - dns01: + cloudflare: + email: cf-admin@example.com + apiTokenSecretName: cf-api-token + apiTokenSecretKey: token + """); + + final Issuer issuer = mockKubernetesClient + .getCreatedResource(Issuer.class, "pul-acme-issuer") + .getResource(); + assertAcmeIssuerBase(issuer); + Assert.assertEquals(issuer.getSpec().getAcme().getSolvers().size(), 1); + + final ACMEChallengeSolver solver = issuer.getSpec().getAcme().getSolvers().getFirst(); + Assert.assertNull(solver.getHttp01()); + Assert.assertNotNull(solver.getDns01()); + Assert.assertNotNull(solver.getDns01().getCloudflare()); + Assert.assertEquals(solver.getDns01().getCloudflare().getEmail(), "cf-admin@example.com"); + Assert.assertEquals(solver.getDns01().getCloudflare().getApiTokenSecretRef().getName(), + "cf-api-token"); + Assert.assertEquals(solver.getDns01().getCloudflare().getApiTokenSecretRef().getKey(), "token"); + Assert.assertNull(solver.getDns01().getRoute53()); + Assert.assertNull(solver.getDns01().getCloudDNS()); + } + + @Test + public void testAcmeIssuerCloudDns() { + final MockKubernetesClient mockKubernetesClient = generateCertificates(""" + global: + name: pul + tls: + enabled: true + broker: + enabled: true + secretName: pul-broker-tls + certProvisioner: + acme: + enabled: true + broker: + generate: true + secretName: pul-broker-tls + issuer: + name: pul-acme-issuer + server: https://acme-v02.api.letsencrypt.org/directory + email: admin@example.com + privateKeySecretName: pul-acme-account-key + solvers: + - dns01: + cloudDNS: + project: my-gcp-project + serviceAccountSecretName: gcp-sa-secret + serviceAccountSecretKey: service-account.json + """); + + final Issuer issuer = mockKubernetesClient + .getCreatedResource(Issuer.class, "pul-acme-issuer") + .getResource(); + assertAcmeIssuerBase(issuer); + Assert.assertEquals(issuer.getSpec().getAcme().getSolvers().size(), 1); + + final ACMEChallengeSolver solver = issuer.getSpec().getAcme().getSolvers().getFirst(); + Assert.assertNull(solver.getHttp01()); + Assert.assertNotNull(solver.getDns01()); + Assert.assertNotNull(solver.getDns01().getCloudDNS()); + Assert.assertEquals(solver.getDns01().getCloudDNS().getProject(), "my-gcp-project"); + Assert.assertEquals( + solver.getDns01().getCloudDNS().getServiceAccountSecretRef().getName(), + "gcp-sa-secret" + ); + Assert.assertEquals( + solver.getDns01().getCloudDNS().getServiceAccountSecretRef().getKey(), + "service-account.json" + ); + Assert.assertNull(solver.getDns01().getRoute53()); + Assert.assertNull(solver.getDns01().getCloudflare()); + } + + @Test + public void testAcmeCertificateGeneration() { + final MockKubernetesClient mockKubernetesClient = generateCertificates(""" + global: + name: pul + tls: + enabled: true + broker: + enabled: true + secretName: pul-broker-tls + certProvisioner: + acme: + enabled: true + broker: + generate: true + secretName: pul-broker-tls + issuer: + name: pul-acme-issuer + server: https://acme-v02.api.letsencrypt.org/directory + email: admin@example.com + privateKeySecretName: pul-acme-account-key + solvers: + - http01: + ingressClass: nginx + """); + + final Certificate brokerCertificate = + mockKubernetesClient.getCreatedResource(Certificate.class, "pul-broker-tls").getResource(); + Assert.assertNotNull(brokerCertificate); + Assert.assertEquals(brokerCertificate.getSpec().getIssuerRef().getName(), "pul-acme-issuer"); + Assert.assertEquals(brokerCertificate.getSpec().getSecretName(), "pul-broker-tls"); + + final Issuer issuer = mockKubernetesClient + .getCreatedResource(Issuer.class, "pul-acme-issuer") + .getResource(); + Assert.assertNotNull(issuer); + Assert.assertEquals(issuer.getSpec().getAcme().getSolvers().size(), 1); + } + + private static void assertAcmeIssuerBase(Issuer issuer) { + Assert.assertNotNull(issuer); + Assert.assertEquals(issuer.getMetadata().getName(), "pul-acme-issuer"); + Assert.assertEquals(issuer.getMetadata().getNamespace(), NAMESPACE); + + Assert.assertNotNull(issuer.getSpec()); + Assert.assertNotNull(issuer.getSpec().getAcme()); + Assert.assertEquals( + issuer.getSpec().getAcme().getServer(), + "https://acme-v02.api.letsencrypt.org/directory" + ); + Assert.assertEquals(issuer.getSpec().getAcme().getEmail(), "admin@example.com"); + Assert.assertEquals(issuer.getSpec().getAcme().getPrivateKeySecretRef().getName(), + "pul-acme-account-key"); + } + private MockKubernetesClient generateCertificates(String spec) { final PulsarClusterSpec pulsarClusterSpec = SerializationUtil.readYaml(spec, PulsarClusterSpec.class); diff --git a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/TlsTest.java b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/TlsTest.java index 4198b205..af8e6d9e 100644 --- a/tests/src/test/java/com/datastax/oss/kaap/tests/helm/TlsTest.java +++ b/tests/src/test/java/com/datastax/oss/kaap/tests/helm/TlsTest.java @@ -48,27 +48,27 @@ protected void test(boolean perComponentCerts, boolean pulsar3) throws Exception .selfSigned(TlsConfig.SelfSignedCertProvisionerConfig.builder() .enabled(true) .perComponent(true) - .zookeeper(TlsConfig.SelfSignedCertificatePerComponentConfig + .zookeeper(TlsConfig.ComponentCertificateConfig .builder() .generate(true) .build()) - .functionsWorker(TlsConfig.SelfSignedCertificatePerComponentConfig + .functionsWorker(TlsConfig.ComponentCertificateConfig .builder() .generate(true) .build()) - .proxy(TlsConfig.SelfSignedCertificatePerComponentConfig + .proxy(TlsConfig.ComponentCertificateConfig .builder() .generate(true) .build()) - .broker(TlsConfig.SelfSignedCertificatePerComponentConfig + .broker(TlsConfig.ComponentCertificateConfig .builder() .generate(true) .build()) - .bookkeeper(TlsConfig.SelfSignedCertificatePerComponentConfig + .bookkeeper(TlsConfig.ComponentCertificateConfig .builder() .generate(true) .build()) - .autorecovery(TlsConfig.SelfSignedCertificatePerComponentConfig + .autorecovery(TlsConfig.ComponentCertificateConfig .builder() .generate(true) .build()) From 013b212366513085e7a200bb9b145f1984ac6b58 Mon Sep 17 00:00:00 2001 From: manas-ctds Date: Mon, 29 Jun 2026 15:43:15 +0530 Subject: [PATCH 69/69] AS-5316: Add support for minReadySeconds to all KAAP CRs (#250) * Add support for minReadySeconds to all kaap CRs * Update api-reference.md doc and all the kaap CRs --- docs/api-reference.md | 70 +++++++++++++++++++ ...utorecoveries.kaap.oss.datastax.com-v1.yml | 4 ++ .../bastions.kaap.oss.datastax.com-v1.yml | 4 ++ .../bookkeepers.kaap.oss.datastax.com-v1.yml | 8 +++ .../crds/brokers.kaap.oss.datastax.com-v1.yml | 8 +++ ...ctionsworkers.kaap.oss.datastax.com-v1.yml | 4 ++ .../crds/proxies.kaap.oss.datastax.com-v1.yml | 8 +++ ...ulsarclusters.kaap.oss.datastax.com-v1.yml | 40 +++++++++++ .../zookeepers.kaap.oss.datastax.com-v1.yml | 4 ++ .../specs/AutorecoverySpecGenerator.java | 1 + .../specs/BastionSpecGenerator.java | 1 + .../specs/BookKeeperSetSpecGenerator.java | 1 + .../specs/BrokerSetSpecGenerator.java | 1 + .../specs/FunctionsWorkerSpecGenerator.java | 1 + .../specs/ProxySetSpecGenerator.java | 1 + .../specs/ZooKeeperSpecGenerator.java | 1 + .../AutorecoveryResourcesFactory.java | 1 + .../bastion/BastionResourcesFactory.java | 1 + .../BookKeeperResourcesFactory.java | 1 + .../broker/BrokerResourcesFactory.java | 1 + .../FunctionsWorkerResourcesFactory.java | 1 + .../proxy/ProxyResourcesFactory.java | 1 + .../zookeeper/ZooKeeperResourcesFactory.java | 1 + .../oss/kaap/crds/BaseComponentSpec.java | 2 + .../datastax/oss/kaap/crds/CRDConstants.java | 1 + .../crds/autorecovery/AutorecoverySpec.java | 2 + .../oss/kaap/crds/bastion/BastionSpec.java | 2 + 27 files changed, 171 insertions(+) diff --git a/docs/api-reference.md b/docs/api-reference.md index 52b4dbb8..0d3ceb18 100644 --- a/docs/api-reference.md +++ b/docs/api-reference.md @@ -234,6 +234,13 @@ Resource Types: Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -6017,6 +6024,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -11835,6 +11849,13 @@ Subset of PodSecurityContext for basic UID, GID, and volume access control. Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -18992,6 +19013,13 @@ Service configuration. Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -31554,6 +31582,13 @@ Indicates if a StorageClass is used. The operator will create the StorageClass i Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -38728,6 +38763,13 @@ Service configuration. Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -51136,6 +51178,13 @@ Update strategy for the StatefulSet. Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -63420,6 +63469,13 @@ TLS configurations related to the ZooKeeper component. Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -70482,6 +70538,13 @@ Service configuration. Match labels selectors to add to each pod.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object @@ -83099,6 +83162,13 @@ Resources requirements. Configuration about the job that initializes the Pulsar cluster creating the needed ZooKeeper nodes.
false + + minReadySeconds + integer + + Min seconds to wait before considering the pod as ready.
+ + false nodeAffinity object diff --git a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml index 1fc6fd9f..81c23db3 100644 --- a/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/autorecoveries.kaap.oss.datastax.com-v1.yml @@ -671,6 +671,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: diff --git a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml index 24d98245..19cbb512 100644 --- a/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bastions.kaap.oss.datastax.com-v1.yml @@ -671,6 +671,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: diff --git a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml index b733eab6..9a6899bc 100644 --- a/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/bookkeepers.kaap.oss.datastax.com-v1.yml @@ -1452,6 +1452,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -3133,6 +3137,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the\ + \ pod as ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: diff --git a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml index 86e1eeb1..761b69be 100644 --- a/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/brokers.kaap.oss.datastax.com-v1.yml @@ -1452,6 +1452,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -3154,6 +3158,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the\ + \ pod as ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: diff --git a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml index 425977f3..2c332546 100644 --- a/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/functionsworkers.kaap.oss.datastax.com-v1.yml @@ -1420,6 +1420,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: diff --git a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml index 74c2a820..0aa0f9e1 100644 --- a/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/proxies.kaap.oss.datastax.com-v1.yml @@ -2276,6 +2276,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -3911,6 +3915,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the\ + \ pod as ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: diff --git a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml index 958a2896..150c32a1 100644 --- a/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/pulsarclusters.kaap.oss.datastax.com-v1.yml @@ -670,6 +670,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -2012,6 +2016,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -4140,6 +4148,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -5821,6 +5833,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the\ + \ pod as ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -8830,6 +8846,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -10532,6 +10552,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the\ + \ pod as ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -13418,6 +13442,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -16507,6 +16535,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -18142,6 +18174,10 @@ spec: type: "string" description: "Match labels selectors to add to each pod." type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the\ + \ pod as ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: @@ -21192,6 +21228,10 @@ spec: \ execution. Default value is 60." type: "integer" type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: diff --git a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml index fa3396e9..b32835b5 100644 --- a/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml +++ b/helm/kaap/crds/zookeepers.kaap.oss.datastax.com-v1.yml @@ -2342,6 +2342,10 @@ spec: \ execution. Default value is 60." type: "integer" type: "object" + minReadySeconds: + description: "Min seconds to wait before considering the pod as\ + \ ready." + type: "integer" nodeAffinity: description: "Node affinity configuration." properties: diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/AutorecoverySpecGenerator.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/AutorecoverySpecGenerator.java index 14b0f5dc..50522752 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/AutorecoverySpecGenerator.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/AutorecoverySpecGenerator.java @@ -96,6 +96,7 @@ public void internalGenerateSpec() { .imagePullPolicy(container.getImagePullPolicy()) .nodeSelectors(spec.getNodeSelector()) .replicas(deploymentSpec.getReplicas()) + .minReadySeconds(deploymentSpec.getMinReadySeconds()) .nodeAffinity(nodeAffinity) .labels(deployment.getMetadata().getLabels()) .podLabels(deploymentSpec.getTemplate().getMetadata().getLabels()) diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BastionSpecGenerator.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BastionSpecGenerator.java index 77cce54d..c9ae3e08 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BastionSpecGenerator.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BastionSpecGenerator.java @@ -98,6 +98,7 @@ public void internalGenerateSpec() { .imagePullPolicy(container.getImagePullPolicy()) .nodeSelectors(spec.getNodeSelector()) .replicas(deploymentSpec.getReplicas()) + .minReadySeconds(deploymentSpec.getMinReadySeconds()) .nodeAffinity(nodeAffinity) .labels(deployment.getMetadata().getLabels()) .podLabels(deploymentSpec.getTemplate().getMetadata().getLabels()) diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BookKeeperSetSpecGenerator.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BookKeeperSetSpecGenerator.java index 8b191c79..3ebb41a8 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BookKeeperSetSpecGenerator.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BookKeeperSetSpecGenerator.java @@ -117,6 +117,7 @@ public void internalGenerateSpec() { .imagePullPolicy(container.getImagePullPolicy()) .nodeSelectors(spec.getNodeSelector()) .replicas(statefulSetSpec.getReplicas()) + .minReadySeconds(statefulSetSpec.getMinReadySeconds()) .probes(createProbeConfig(container)) .nodeAffinity(nodeAffinity) .pdb(podDisruptionBudgetConfig) diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BrokerSetSpecGenerator.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BrokerSetSpecGenerator.java index 9b54da5b..4b2a1224 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BrokerSetSpecGenerator.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/BrokerSetSpecGenerator.java @@ -120,6 +120,7 @@ public void internalGenerateSpec() { .imagePullPolicy(container.getImagePullPolicy()) .nodeSelectors(spec.getNodeSelector()) .replicas(statefulSetSpec.getReplicas()) + .minReadySeconds(statefulSetSpec.getMinReadySeconds()) .probes(createBrokerProbeConfig(container)) .nodeAffinity(nodeAffinity) .pdb(podDisruptionBudgetConfig) diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/FunctionsWorkerSpecGenerator.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/FunctionsWorkerSpecGenerator.java index 137276f9..6a692027 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/FunctionsWorkerSpecGenerator.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/FunctionsWorkerSpecGenerator.java @@ -121,6 +121,7 @@ public void internalGenerateSpec() { .imagePullPolicy(mainContainer.getImagePullPolicy()) .nodeSelectors(spec.getNodeSelector()) .replicas(statefulSetSpec.getReplicas()) + .minReadySeconds(statefulSetSpec.getMinReadySeconds()) .nodeAffinity(nodeAffinity) .probes(createProbeConfig(mainContainer)) .labels(statefulSet.getMetadata().getLabels()) diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/ProxySetSpecGenerator.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/ProxySetSpecGenerator.java index f04803a3..2b14743c 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/ProxySetSpecGenerator.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/ProxySetSpecGenerator.java @@ -122,6 +122,7 @@ public void internalGenerateSpec() { .imagePullPolicy(mainContainer.getImagePullPolicy()) .nodeSelectors(spec.getNodeSelector()) .replicas(deploymentSpec.getReplicas()) + .minReadySeconds(deploymentSpec.getMinReadySeconds()) .nodeAffinity(nodeAffinity) .probes(createProbeConfig(mainContainer)) .labels(deployment.getMetadata().getLabels()) diff --git a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/ZooKeeperSpecGenerator.java b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/ZooKeeperSpecGenerator.java index 3a093c1c..16595f78 100644 --- a/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/ZooKeeperSpecGenerator.java +++ b/migration-tool/src/main/java/com/datastax/oss/kaap/migrationtool/specs/ZooKeeperSpecGenerator.java @@ -114,6 +114,7 @@ public void internalGenerateSpec() { .imagePullPolicy(container.getImagePullPolicy()) .nodeSelectors(spec.getNodeSelector()) .replicas(statefulSetSpec.getReplicas()) + .minReadySeconds(statefulSetSpec.getMinReadySeconds()) .probes(createProbeConfig(container)) .nodeAffinity(nodeAffinity) .pdb(podDisruptionBudgetConfig) diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java index ae884785..e1335f5e 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/autorecovery/AutorecoveryResourcesFactory.java @@ -192,6 +192,7 @@ public void patchDeployment() { .endMetadata() .withNewSpec() .withReplicas(spec.getReplicas()) + .withMinReadySeconds(spec.getMinReadySeconds()) .withNewSelector() .withMatchLabels(getMatchLabels(spec.getMatchLabels())) .endSelector() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java index f412e858..62628c83 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bastion/BastionResourcesFactory.java @@ -176,6 +176,7 @@ public void patchDeployment() { .endMetadata() .withNewSpec() .withReplicas(spec.getReplicas()) + .withMinReadySeconds(spec.getMinReadySeconds()) .withNewSelector() .withMatchLabels(getMatchLabels(spec.getMatchLabels())) .endSelector() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java index d596179a..4d8ae54c 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/bookkeeper/BookKeeperResourcesFactory.java @@ -347,6 +347,7 @@ public StatefulSet generateStatefulSet() { .withNewSpec() .withServiceName(resourceName) .withReplicas(spec.getReplicas()) + .withMinReadySeconds(spec.getMinReadySeconds()) .withNewSelector() .withMatchLabels(getMatchLabels(spec.getMatchLabels())) .endSelector() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java index 819f9da5..1e0f78ae 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/broker/BrokerResourcesFactory.java @@ -410,6 +410,7 @@ public StatefulSet generateStatefulSet() { .withNewSpec() .withServiceName(resourceName) .withReplicas(spec.getReplicas()) + .withMinReadySeconds(spec.getMinReadySeconds()) .withNewSelector() .withMatchLabels(getMatchLabels(spec.getMatchLabels())) .endSelector() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java index 0d1db804..8e1da127 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/function/FunctionsWorkerResourcesFactory.java @@ -494,6 +494,7 @@ public StatefulSet generateStatefulSet() { .withNewSpec() .withServiceName(resourceName) .withReplicas(spec.getReplicas()) + .withMinReadySeconds(spec.getMinReadySeconds()) .withNewSelector() .withMatchLabels(getMatchLabels(spec.getMatchLabels())) .endSelector() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java index d9345a47..8abf1c01 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/proxy/ProxyResourcesFactory.java @@ -530,6 +530,7 @@ public void patchDeployment() { .endMetadata() .withNewSpec() .withReplicas(spec.getReplicas()) + .withMinReadySeconds(spec.getMinReadySeconds()) .withNewSelector() .withMatchLabels(getMatchLabels(spec.getMatchLabels())) .endSelector() diff --git a/operator/src/main/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperResourcesFactory.java b/operator/src/main/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperResourcesFactory.java index 7970e50c..aeff7cf7 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperResourcesFactory.java +++ b/operator/src/main/java/com/datastax/oss/kaap/controllers/zookeeper/ZooKeeperResourcesFactory.java @@ -345,6 +345,7 @@ public void patchStatefulSet() { .withNewSpec() .withServiceName(resourceName) .withReplicas(spec.getReplicas()) + .withMinReadySeconds(spec.getMinReadySeconds()) .withNewSelector() .withMatchLabels(matchLabels) .endSelector() diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java index 50213cfd..b422e66c 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/BaseComponentSpec.java @@ -51,6 +51,8 @@ public abstract class BaseComponentSpec extends ValidableSpec implements W private PodDisruptionBudgetConfig pdb; @JsonPropertyDescription("Mount additional volumes to the pod.") private AdditionalVolumesConfig additionalVolumes; + @JsonPropertyDescription(CRDConstants.DOC_MIN_READY_SECONDS) + private Integer minReadySeconds; @JsonPropertyDescription(CRDConstants.DOC_TOLERATIONS) private List tolerations; @JsonPropertyDescription(CRDConstants.DOC_NODE_AFFINITY) diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/CRDConstants.java b/operator/src/main/java/com/datastax/oss/kaap/crds/CRDConstants.java index 3a510947..dbbd028e 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/CRDConstants.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/CRDConstants.java @@ -46,6 +46,7 @@ public final class CRDConstants { public static final String DOC_POD_MATCH_LABELS = "Match labels selectors to add to each pod."; public static final String DOC_CONFIG = "Configuration."; public static final String DOC_REPLICAS = "Number of desired replicas."; + public static final String DOC_MIN_READY_SECONDS = "Min seconds to wait before considering the pod as ready."; public static final String DOC_GRACE_PERIOD = "Termination grace period in seconds."; public static final String DOC_RESOURCES = "Resources requirements."; public static final String DOC_TOLERATIONS = "Pod tolerations."; diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java index 13575b3f..45c51907 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/autorecovery/AutorecoverySpec.java @@ -67,6 +67,8 @@ public class AutorecoverySpec extends ValidableSpec implements protected Map config; @JsonPropertyDescription(CRDConstants.DOC_REPLICAS) protected Integer replicas; + @JsonPropertyDescription(CRDConstants.DOC_MIN_READY_SECONDS) + private Integer minReadySeconds; @JsonPropertyDescription(CRDConstants.DOC_ANNOTATIONS) private Map annotations; @JsonPropertyDescription(CRDConstants.DOC_POD_ANNOTATIONS) diff --git a/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java b/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java index 597447c6..71b11d3d 100644 --- a/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java +++ b/operator/src/main/java/com/datastax/oss/kaap/crds/bastion/BastionSpec.java @@ -67,6 +67,8 @@ public class BastionSpec extends ValidableSpec implements WithDefau protected Map config; @JsonPropertyDescription(CRDConstants.DOC_REPLICAS) protected Integer replicas; + @JsonPropertyDescription(CRDConstants.DOC_MIN_READY_SECONDS) + private Integer minReadySeconds; @JsonPropertyDescription(CRDConstants.DOC_ANNOTATIONS) private Map annotations; @JsonPropertyDescription(CRDConstants.DOC_POD_ANNOTATIONS)